From e3a4627eeb5bfd5e8e35e54de0fb429086e13986 Mon Sep 17 00:00:00 2001 From: water111 <48171810+water111@users.noreply.github.com> Date: Mon, 26 Sep 2022 20:57:44 -0400 Subject: [PATCH] [decompiler] recognize jak 2 `vector-float*!`, fix some vector inline casting bugs (#1926) --- decompiler/IR2/AtomicOp.cpp | 18 + decompiler/IR2/AtomicOp.h | 10 +- decompiler/IR2/Form.cpp | 2 + decompiler/IR2/Form.h | 5 + decompiler/IR2/FormExpressionAnalysis.cpp | 28 + decompiler/IR2/IR2_common.h | 1 + decompiler/analysis/atomic_op_builder.cpp | 99 +- decompiler/config/jak2/type_casts.jsonc | 29 +- decompiler/types2/ForwardProp.cpp | 28 +- goal_src/jak2/engine/anim/joint-mod.gc | 60 +- goal_src/jak2/engine/camera/cam-debug.gc | 810 +++----- goal_src/jak2/engine/camera/cam-interface.gc | 36 +- goal_src/jak2/engine/camera/cam-layout.gc | 747 +++---- goal_src/jak2/engine/camera/cam-states-dbg.gc | 429 ++-- goal_src/jak2/engine/camera/cam-states.gc | 516 +++-- goal_src/jak2/engine/camera/camera.gc | 295 ++- goal_src/jak2/engine/collide/find-nearest.gc | 316 ++- goal_src/jak2/engine/debug/debug.gc | 159 +- goal_src/jak2/engine/geometry/cylinder.gc | 190 +- goal_src/jak2/engine/geometry/path.gc | 86 +- goal_src/jak2/engine/geometry/vol.gc | 294 ++- goal_src/jak2/engine/gfx/mood/mood-funcs.gc | 59 +- goal_src/jak2/engine/math/vector.gc | 107 +- goal_src/jak2/engine/physics/chain-physics.gc | 64 +- goal_src/jak2/engine/physics/trajectory.gc | 75 +- .../jak2/engine/target/board/board-states.gc | 739 ++++--- .../jak2/engine/target/board/target-board.gc | 1741 ++++++++--------- goal_src/jak2/engine/target/logic-target.gc | 351 ++-- goal_src/jak2/engine/target/target.gc | 145 +- .../jak2/engine/anim/joint-mod_REF.gc | 25 +- .../jak2/engine/camera/cam-debug_REF.gc | 777 +++----- .../jak2/engine/camera/cam-interface_REF.gc | 36 +- .../jak2/engine/camera/cam-layout_REF.gc | 618 +++--- .../jak2/engine/camera/cam-states-dbg_REF.gc | 430 ++-- .../jak2/engine/camera/cam-states_REF.gc | 516 +++-- .../jak2/engine/camera/camera_REF.gc | 713 +++---- .../jak2/engine/collide/find-nearest_REF.gc | 315 ++- .../reference/jak2/engine/debug/debug_REF.gc | 159 +- .../jak2/engine/debug/editable_REF.gc | 466 +---- .../jak2/engine/geometry/cylinder_REF.gc | 185 +- .../jak2/engine/geometry/path_REF.gc | 59 +- .../reference/jak2/engine/geometry/vol_REF.gc | 283 ++- .../jak2/engine/gfx/mood/mood-funcs_REF.gc | 59 +- .../reference/jak2/engine/math/vector_REF.gc | 107 +- .../jak2/engine/physics/chain-physics_REF.gc | 60 +- .../jak2/engine/physics/trajectory_REF.gc | 75 +- .../engine/target/board/board-states_REF.gc | 642 +++--- .../engine/target/board/target-board_REF.gc | 1666 ++++++++-------- .../jak2/engine/target/logic-target_REF.gc | 349 ++-- .../jak2/engine/target/target_REF.gc | 101 +- 50 files changed, 6323 insertions(+), 8757 deletions(-) diff --git a/decompiler/IR2/AtomicOp.cpp b/decompiler/IR2/AtomicOp.cpp index 7e5d0055ff..eed0998a77 100644 --- a/decompiler/IR2/AtomicOp.cpp +++ b/decompiler/IR2/AtomicOp.cpp @@ -352,6 +352,8 @@ std::string get_simple_expression_op_name(SimpleExpression::Kind kind) { return "vec4dot"; case SimpleExpression::Kind::VECTOR_LENGTH: return "veclength"; + case SimpleExpression::Kind::VECTOR_PLUS_FLOAT_TIMES: + return "vecplusfloattimes"; case SimpleExpression::Kind::SET_ON_LESS_THAN: case SimpleExpression::Kind::SET_ON_LESS_THAN_IMM: return "set-on-less-than"; @@ -421,6 +423,8 @@ int get_simple_expression_arg_count(SimpleExpression::Kind kind) { return 2; case SimpleExpression::Kind::VECTOR_LENGTH: return 1; + case SimpleExpression::Kind::VECTOR_PLUS_FLOAT_TIMES: + return 4; default: ASSERT(false); return -1; @@ -453,6 +457,20 @@ SimpleExpression::SimpleExpression(Kind kind, ASSERT(get_simple_expression_arg_count(kind) == 3); } +SimpleExpression::SimpleExpression(Kind kind, + const SimpleAtom& arg0, + const SimpleAtom& arg1, + const SimpleAtom& arg2, + const SimpleAtom& arg3) + : n_args(4) { + m_args[0] = arg0; + m_args[1] = arg1; + m_args[2] = arg2; + m_args[3] = arg3; + m_kind = kind; + ASSERT(get_simple_expression_arg_count(kind) == 4); +} + goos::Object SimpleExpression::to_form(const std::vector& labels, const Env& env) const { std::vector forms; diff --git a/decompiler/IR2/AtomicOp.h b/decompiler/IR2/AtomicOp.h index 1cecc2e497..3b3cf42acb 100644 --- a/decompiler/IR2/AtomicOp.h +++ b/decompiler/IR2/AtomicOp.h @@ -255,7 +255,8 @@ class SimpleExpression { SUBU_L32_S7, // use SUBU X, src0, s7 to check if lower 32-bits are s7. VECTOR_3_DOT, VECTOR_4_DOT, - VECTOR_LENGTH, // jak 2 only. + VECTOR_LENGTH, // jak 2 only. + VECTOR_PLUS_FLOAT_TIMES, // jak 2 only. SET_ON_LESS_THAN, SET_ON_LESS_THAN_IMM }; @@ -279,6 +280,11 @@ class SimpleExpression { const SimpleAtom& arg0, const SimpleAtom& arg1, const SimpleAtom& arg2); + SimpleExpression(Kind kind, + const SimpleAtom& arg0, + const SimpleAtom& arg1, + const SimpleAtom& arg2, + const SimpleAtom& arg3); goos::Object to_form(const std::vector& labels, const Env& env) const; std::string to_string(const Env& env) const; bool operator==(const SimpleExpression& other) const; @@ -300,7 +306,7 @@ class SimpleExpression { private: Kind m_kind = Kind::INVALID; - SimpleAtom m_args[3]; + SimpleAtom m_args[4]; s8 n_args = -1; }; diff --git a/decompiler/IR2/Form.cpp b/decompiler/IR2/Form.cpp index 640068b597..0999f35df0 100644 --- a/decompiler/IR2/Form.cpp +++ b/decompiler/IR2/Form.cpp @@ -1875,6 +1875,8 @@ std::string fixed_operator_to_string(FixedOperatorKind kind) { return "cpad-hold?"; case FixedOperatorKind::VECTOR_LENGTH: return "vector-length"; + case FixedOperatorKind::VECTOR_PLUS_FLOAT_TIMES: + return "vector+float*!"; default: ASSERT(false); return ""; diff --git a/decompiler/IR2/Form.h b/decompiler/IR2/Form.h index 3b75601e48..44a1e343f3 100644 --- a/decompiler/IR2/Form.h +++ b/decompiler/IR2/Form.h @@ -228,6 +228,11 @@ class SimpleExpressionElement : public FormElement { FormStack& stack, std::vector* result, bool allow_side_effects); + void update_from_stack_vector_plus_float_times(const Env& env, + FormPool& pool, + FormStack& stack, + std::vector* result, + bool allow_side_effects); void update_from_stack_vectors_in_common(FixedOperatorKind kind, const Env& env, FormPool& pool, diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index ab0364a0f7..48ceac70e5 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -1557,6 +1557,31 @@ void SimpleExpressionElement::update_from_stack_vector_plus_minus_cross( result->push_back(new_form); } +void SimpleExpressionElement::update_from_stack_vector_plus_float_times( + const Env& env, + FormPool& pool, + FormStack& stack, + std::vector* result, + bool allow_side_effects) { + std::vector popped_args = pop_to_forms({m_expr.get_arg(0).var(), m_expr.get_arg(1).var(), + m_expr.get_arg(2).var(), m_expr.get_arg(3).var()}, + env, pool, stack, allow_side_effects); + + for (int i = 0; i < 4; i++) { + auto arg_type = env.get_types_before_op(m_my_idx).get(m_expr.get_arg(i).var().reg()); + TypeSpec desired_type(i == 3 ? "float" : "vector"); + if (arg_type.typespec() != desired_type) { + popped_args.at(i) = cast_form(popped_args.at(i), desired_type, pool, env); + } + } + + auto new_form = pool.alloc_element( + GenericOperator::make_fixed(FixedOperatorKind::VECTOR_PLUS_FLOAT_TIMES), + std::vector{popped_args.at(0), popped_args.at(1), popped_args.at(2), + popped_args.at(3)}); + result->push_back(new_form); +} + void SimpleExpressionElement::update_from_stack_vector_float_product( const Env& env, FormPool& pool, @@ -2454,6 +2479,9 @@ void SimpleExpressionElement::update_from_stack(const Env& env, update_from_stack_vectors_in_common(FixedOperatorKind::VECTOR_LENGTH, env, pool, stack, result, allow_side_effects); break; + case SimpleExpression::Kind::VECTOR_PLUS_FLOAT_TIMES: + update_from_stack_vector_plus_float_times(env, pool, stack, result, allow_side_effects); + break; default: throw std::runtime_error( fmt::format("SimpleExpressionElement::update_from_stack NYI for {}", to_string(env))); diff --git a/decompiler/IR2/IR2_common.h b/decompiler/IR2/IR2_common.h index cb6dfca92e..5cff90092a 100644 --- a/decompiler/IR2/IR2_common.h +++ b/decompiler/IR2/IR2_common.h @@ -170,6 +170,7 @@ enum class FixedOperatorKind { PPOINTER_TO_PROCESS, VECTOR_4_DOT, VECTOR_LENGTH, + VECTOR_PLUS_FLOAT_TIMES, SEND_EVENT, CPAD_PRESSED_P, CPAD_HOLD_P, diff --git a/decompiler/analysis/atomic_op_builder.cpp b/decompiler/analysis/atomic_op_builder.cpp index c61fbb62db..b55fea1639 100644 --- a/decompiler/analysis/atomic_op_builder.cpp +++ b/decompiler/analysis/atomic_op_builder.cpp @@ -1867,6 +1867,81 @@ std::unique_ptr convert_6(const Instruction& i0, return nullptr; } +std::unique_ptr convert_vector_plus_float_times(const Instruction* instrs, int idx) { + // lqc2 vf2, 0(a2) + if (instrs[0].kind != InstructionKind::LQC2 || instrs[0].get_dst(0).get_reg() != make_vf(2) || + !instrs[0].get_src(0).is_imm(0)) { + return nullptr; + } + Register vec_src_2 = instrs[0].get_src(1).get_reg(); + + // lqc2 vf1, 0(a1) + if (instrs[1].kind != InstructionKind::LQC2 || instrs[1].get_dst(0).get_reg() != make_vf(1) || + !instrs[1].get_src(0).is_imm(0)) { + return nullptr; + } + Register vec_src_1 = instrs[1].get_src(1).get_reg(); + + // mfc1 a0, f0 + if (instrs[2].kind != InstructionKind::MFC1) { + return nullptr; + } + + Register flt_src_3 = instrs[2].get_src(0).get_reg(); + Register temp = instrs[2].get_dst(0).get_reg(); + + // qmtc2.i vf3, a3 + if (instrs[3].kind != InstructionKind::QMTC2 || instrs[3].get_dst(0).get_reg() != make_vf(3) || + instrs[3].get_src(0).get_reg() != temp) { + return nullptr; + } + + // vaddx.w vf4, vf0, vf0 + if (instrs[4].kind != InstructionKind::VADD_BC || instrs[4].get_dst(0).get_reg() != make_vf(4) || + instrs[4].get_src(0).get_reg() != make_vf(0) || + instrs[4].get_src(1).get_reg() != make_vf(0) || instrs[4].cop2_bc != 0 || + instrs[4].cop2_dest != 0b0001) { + return nullptr; + } + + // vmulax.xyzw acc, vf2, vf3 + if (instrs[5].kind != InstructionKind::VMULA_BC || instrs[5].get_src(0).get_reg() != make_vf(2) || + instrs[5].get_src(1).get_reg() != make_vf(3) || instrs[5].cop2_dest != 0b1111 || + instrs[5].cop2_bc != 0) { + return nullptr; + } + + // vmaddw.xyz vf4, vf1, vf0 + if (instrs[6].kind != InstructionKind::VMADD_BC || instrs[6].get_dst(0).get_reg() != make_vf(4) || + instrs[6].get_src(0).get_reg() != make_vf(1) || + instrs[6].get_src(1).get_reg() != make_vf(0) || instrs[6].cop2_dest != 0b1110 || + instrs[6].cop2_bc != 3) { + return nullptr; + } + + // sqc2 vf4, 0(a0) + if (instrs[7].kind != InstructionKind::SQC2 || instrs[7].get_src(0).get_reg() != make_vf(4) || + !instrs[7].get_src(1).is_imm(0)) { + return nullptr; + } + Register dst = instrs[7].get_src(2).get_reg(); + + return std::make_unique( + make_dst_var(dst, idx), + SimpleExpression(SimpleExpression::Kind::VECTOR_PLUS_FLOAT_TIMES, make_src_atom(dst, idx), + make_src_atom(vec_src_1, idx), make_src_atom(vec_src_2, idx), + make_src_atom(flt_src_3, idx)), + idx); +} + +std::unique_ptr convert_8(const Instruction* instrs, int idx) { + auto as_vector_float_plus_times = convert_vector_plus_float_times(instrs, idx); + if (as_vector_float_plus_times) { + return as_vector_float_plus_times; + } + return nullptr; +} + bool is_lwc(const Instruction& instr, int offset) { return instr.kind == InstructionKind::LWC1 && instr.get_src(0).is_imm(offset); } @@ -1951,6 +2026,14 @@ std::unique_ptr convert_vector3_dot(const Instruction* instrs, int idx idx); } +std::unique_ptr convert_9(const Instruction* instrs, int idx) { + auto as_vector3_dot = convert_vector3_dot(instrs, idx); + if (as_vector3_dot) { + return as_vector3_dot; + } + return nullptr; +} + std::unique_ptr convert_vector_length(const Instruction* instrs, int idx) { // 0: lqc2 vf1, 0(a1) if (instrs[0].kind != InstructionKind::LQC2 || instrs[0].get_dst(0).get_reg() != make_vf(1) || @@ -2136,14 +2219,6 @@ std::unique_ptr convert_vector4_dot(const Instruction* instrs, int idx idx); } -std::unique_ptr convert_9(const Instruction* instrs, int idx) { - auto as_vector3_dot = convert_vector3_dot(instrs, idx); - if (as_vector3_dot) { - return as_vector3_dot; - } - return nullptr; -} - std::unique_ptr convert_12(const Instruction* instrs, int idx) { auto as_vector4_dot = convert_vector4_dot(instrs, idx); if (as_vector4_dot) { @@ -2207,6 +2282,14 @@ int convert_block_to_atomic_ops(int begin_idx, } } + if (!converted && n_instr >= 8) { + op = convert_8(&instr[0], op_idx); + if (op) { + converted = true; + length = 8; + } + } + if (!converted && n_instr >= 6) { // try 6 instructions op = convert_6(instr[0], instr[1], instr[2], instr[3], instr[4], instr[5], op_idx); diff --git a/decompiler/config/jak2/type_casts.jsonc b/decompiler/config/jak2/type_casts.jsonc index 47e1247bb7..a6c4e4b972 100644 --- a/decompiler/config/jak2/type_casts.jsonc +++ b/decompiler/config/jak2/type_casts.jsonc @@ -1826,13 +1826,7 @@ ], "target-real-post": [[97, "f28", "float"]], "target-compute-pole": [ - [12, "s2", "swingpole"], - [20, "s2", "swingpole"], - [23, "s2", "swingpole"], - [33, "s2", "swingpole"], - [36, "s2", "swingpole"], - [99, "s2", "swingpole"], - [122, "s2", "swingpole"] + [[12,180], "s2", "swingpole"] ], "tobot-start": [[26, "s5", "target"]], "(method 10 target)": [[28, "t9", "(function target none)"]], @@ -1842,11 +1836,10 @@ "cam-layout-entity-volume-info-create": [ ["_stack_", 16, "res-tag"], [16, "v0", "(inline-array vector)"], - [223, "v1", "float"], - [254, "v1", "float"], - [258, "v1", "float"], - [282, "v1", "float"], - [325, "f0", "float"] + [209, "v1", "float"], + [233, "v1", "float"], + [237, "v1", "float"], + [261, "v1", "float"] ], "cam-layout-entity-info": [ // can't just cast the return value from the res-tag retrieval @@ -1898,10 +1891,10 @@ ], "clmf-cam-float-adjust": [[53, "v1", "res-tag"]], "(method 9 plane-volume)": [ - [185, "v1", "float"], - [216, "v1", "float"], - [241, "v1", "float"], - [281, "f0", "float"], + [171, "v1", "float"], + [195, "v1", "float"], + [199, "v1", "float"], + // [281, "f0", "float"], [220, "v1", "float"] ], "(method 45 nav-mesh)": [[15, "v1", "entity-nav-mesh"]], @@ -2564,8 +2557,8 @@ [147, "v1", "art-joint-anim"] ], "target-board-ground-check": [ - [205, "v1", "board"], - [265, "v1", "board"] + [198, "v1", "board"], + [258, "v1", "board"] ], "(enter target-board-jump)": [ [174, "v1", "board"], diff --git a/decompiler/types2/ForwardProp.cpp b/decompiler/types2/ForwardProp.cpp index 25babbd6ad..6bf28da1bc 100644 --- a/decompiler/types2/ForwardProp.cpp +++ b/decompiler/types2/ForwardProp.cpp @@ -379,7 +379,7 @@ void types2_for_label(types2::Type& type_out, env.file->labels.at(label_idx).name)); } else { auto& name = env.file->labels.at(label_idx).name; - fmt::print("Encountered unknown label: {}\n", name); + // fmt::print("Encountered unknown label: {}\n", name); instr.unknown_label_tag = std::make_unique(); instr.unknown_label_tag->label_idx = label_idx; instr.unknown_label_tag->label_name = name; @@ -1035,7 +1035,7 @@ void types2_addr_on_stack(types2::Type& type_out, throw std::runtime_error( fmt::format("Failed to find a stack variable or structure at offset {}", offset)); } else { - fmt::print("Encountered unknown stack address {} : {}\n", env.func->name(), offset); + // fmt::print("Encountered unknown stack address {} : {}\n", env.func->name(), offset); instr.unknown_stack_structure_tag = std::make_unique(); instr.unknown_stack_structure_tag->stack_offset = offset; type_out.tag.unknown_stack_structure = instr.unknown_stack_structure_tag.get(); @@ -1448,6 +1448,26 @@ void types2_for_vector_float_product(types2::Type& type_out, type_out.type = TP_Type::make_from_ts(TypeSpec("vector")); } +void types2_for_vector_plus_float_times(types2::Type& type_out, + const SimpleExpression& expr, + types2::TypeState& input_types, + const DecompilerTypeSystem& dts, + types2::TypePropExtras& extras) { + // backprop to make inputs vector + for (int i = 0; i < expr.args(); i++) { + auto& arg = expr.get_arg(i); + auto& arg_type = input_types[arg.var().reg()]; + if (arg_type->tag.has_tag()) { + if (types2::backprop_tagged_type(TP_Type::make_from_ts(i == 3 ? "float" : "vector"), + *arg_type, dts)) { + extras.needs_rerun = true; + } + } + } + + type_out.type = TP_Type::make_from_ts(TypeSpec("vector")); +} + void types2_for_float_to_int(types2::Type& type_out, const SimpleExpression& expr, types2::TypeState& input_types, @@ -1583,6 +1603,10 @@ void types2_for_expr(types2::Type& type_out, break; case SimpleExpression::Kind::VECTOR_FLOAT_PRODUCT: types2_for_vector_float_product(type_out, expr, input_types, dts, extras); + break; + case SimpleExpression::Kind::VECTOR_PLUS_FLOAT_TIMES: + types2_for_vector_plus_float_times(type_out, expr, input_types, dts, extras); + break; case SimpleExpression::Kind::PCPYLD: types2_for_pcpyld(type_out, expr, env, input_types, dts); break; diff --git a/goal_src/jak2/engine/anim/joint-mod.gc b/goal_src/jak2/engine/anim/joint-mod.gc index ec13cb6a53..2b6de6fae5 100644 --- a/goal_src/jak2/engine/anim/joint-mod.gc +++ b/goal_src/jak2/engine/anim/joint-mod.gc @@ -201,10 +201,7 @@ (vector-! s3-1 s2-3 - (the-as - vector - (vector-float*! (new 'stack-no-clear 'vector) sv-832 (/ (vector-dot sv-832 s2-3) (vector-dot sv-832 sv-832))) - ) + (vector-float*! (new 'stack-no-clear 'vector) sv-832 (/ (vector-dot sv-832 s2-3) (vector-dot sv-832 sv-832))) ) ) ) @@ -239,8 +236,21 @@ (sv-800 sv-816 sv-848 a2-9) ) (vector-orient-by-quat! s2-3 s2-3 s1-1) - (let ((f0-26 (fabs (vector-dot (vector-normalize-copy! (new 'stack-no-clear 'vector) s2-3 1.0) - (vector-normalize-copy! (new 'stack-no-clear 'vector) s0-1 1.0))))) + (set! sv-864 (vector-normalize-copy! (new 'stack-no-clear 'vector) s2-3 1.0)) + (let* ((v1-76 (vector-normalize-copy! (new 'stack-no-clear 'vector) s0-1 1.0)) + (f0-23 (-> sv-864 x)) + (f1-16 (-> sv-864 y)) + (f2-6 (-> sv-864 z)) + (f3-5 (-> v1-76 x)) + (f4-0 (-> v1-76 y)) + (f5-0 (-> v1-76 z)) + ) + ; (.mula.s f0-23 f3-5) + ; (.madda.s f1-16 f4-0) + ; (.madd.s f0-24 f2-6 f5-0) + (set! f0-24 (+ (* f0-23 f3-5) (* f1-16 f4-0) (* f2-6 f5-0))) + ) + (let ((f0-26 (fabs f0-24))) (if (< 0.98 f0-26) (vector-orient-by-quat! s2-3 s3-1 s1-1) ) @@ -336,11 +346,7 @@ (sv-168 vector) (sv-172 symbol) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) + (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) @@ -481,19 +487,9 @@ ) (set! (-> sv-16 trans x) (-> v1-97 y)) (let ((f0-60 (* (-> sv-16 trans y) (-> sv-16 flex-blend)))) - (when (!= f0-60 0.0) - (let ((a0-86 (-> s5-0 trans))) - (.lvf vf2 (&-> s4-1 quad)) - (.lvf vf1 (&-> v1-97 quad)) - (let ((v1-98 f0-60)) - (.mov vf3 v1-98) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-86 quad) vf4) + (if (!= f0-60 0.0) + (vector+float*! (-> s5-0 trans) v1-97 s4-1 f0-60) ) - ) ) ) ) @@ -843,7 +839,19 @@ (let ((s2-1 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> gp-0 target) s2-0) 1.0))) (set! sv-160 (-> gp-0 process node-list data (-> gp-0 base-joint) bone transform vector (-> gp-0 base-nose))) (set! sv-80 (the-as symbol #f)) - (if (< (vector-dot sv-144 s0-0) 0.0) + (let ((f0-0 (-> sv-144 x)) + (f1-0 (-> sv-144 y)) + (f2-0 (-> sv-144 z)) + (f3-0 (-> s0-0 x)) + (f4-0 (-> s0-0 y)) + (f5-0 (-> s0-0 z)) + ) + ; (.mula.s f0-0 f3-0) + ; (.madda.s f1-0 f4-0) + ; (.madd.s f0-1 f2-0 f5-0) + (set! f0-1 (+ (* f0-0 f3-0) (* f1-0 f4-0) (* f2-0 f5-0))) + ) + (if (< f0-1 0.0) (set! sv-80 #t) ) (let* ((f30-0 (vector-y-angle s3-0)) @@ -1484,7 +1492,3 @@ 0 (none) ) - - - - diff --git a/goal_src/jak2/engine/camera/cam-debug.gc b/goal_src/jak2/engine/camera/cam-debug.gc index 7ce7475de7..10bff722ec 100644 --- a/goal_src/jak2/engine/camera/cam-debug.gc +++ b/goal_src/jak2/engine/camera/cam-debug.gc @@ -710,91 +710,23 @@ ) (defun camera-fov-draw ((arg0 int) (arg1 int) (arg2 vector) (arg3 float) (arg4 float) (arg5 vector4w)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-1 (the-as (object vector) (-> (the-as cam-dbg-scratch #x70000000) fov-vv)))) - (let ((t2-1 arg2) - (t3-0 arg1) - (f0-0 arg3) - ) - (.lvf vf2 t3-0) - (.lvf vf1 (&-> t2-1 quad)) - (let ((t2-2 f0-0)) - (.mov vf3 t2-2) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-1) 0)) vf4) - ) - (let ((v1-3 (the-as object (-> (the-as cam-dbg-scratch #x70000000) fov-vv 1)))) - (let ((t2-4 arg2) - (t3-1 arg0) - (f0-1 arg3) - ) - (.lvf vf2 t3-1) - (.lvf vf1 (&-> t2-4 quad)) - (let ((a3-1 f0-1)) - (.mov vf3 a3-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-3) 0)) vf4) - ) - (let ((v1-5 (the-as object (-> (the-as cam-dbg-scratch #x70000000) fov-vv 2)))) - (let ((a3-3 arg2) - (f0-2 arg4) - ) - (.lvf vf2 arg0) - (.lvf vf1 (&-> a3-3 quad)) - (let ((a0-1 f0-2)) - (.mov vf3 a0-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-5) 0)) vf4) - ) - (let ((v1-7 (the-as object (-> (the-as cam-dbg-scratch #x70000000) fov-vv 3)))) - (let ((a0-3 arg2) - (f0-3 arg4) - ) - (.lvf vf2 arg1) - (.lvf vf1 (&-> a0-3 quad)) - (let ((a0-4 f0-3)) - (.mov vf3 a0-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-7) 0)) vf4) - ) - (camera-line-setup arg5) - (camera-line-draw - (the-as vector (-> (the-as cam-dbg-scratch #x70000000) fov-vv)) - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 1) - ) - (camera-line-draw - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 1) - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 2) - ) - (camera-line-draw - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 2) - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 3) - ) - (none) + (vector+float*! + (the-as vector (-> (the-as cam-dbg-scratch #x70000000) fov-vv)) + arg2 + (the-as vector arg1) + arg3 ) + (vector+float*! (the-as vector (the-as (pointer vector) (+ 352 #x70000000))) arg2 (the-as vector arg0) arg3) + (vector+float*! (the-as vector (+ 368 #x70000000)) arg2 (the-as vector arg0) arg4) + (vector+float*! (the-as vector (+ 384 #x70000000)) arg2 (the-as vector arg1) arg4) + (camera-line-setup arg5) + (camera-line-draw (the-as vector (+ 336 #x70000000)) (the-as vector (+ 352 #x70000000))) + (camera-line-draw + (the-as vector (&+ (the-as (pointer vector) 352) #x70000000)) + (the-as vector (+ 368 #x70000000)) + ) + (camera-line-draw (the-as vector (+ 368 #x70000000)) (the-as vector (+ 384 #x70000000))) + (none) ) (defun camera-fov-frame ((arg0 matrix) (arg1 vector) (arg2 float) (arg3 float) (arg4 float) (arg5 vector4w)) @@ -1094,349 +1026,190 @@ ) (defun camera-slave-debug ((arg0 camera-slave)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when *display-camera-marks* - (if (-> *setting-control* cam-current use-point-of-interest) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - (-> *setting-control* cam-current point-of-interest) - (new 'static 'vector4w :x #x80 :z #x80 :w #x80) - (meters 0.25) - ) - ) - (let ((f30-0 (* 0.5 (-> *camera-combiner* fov)))) - (camera-fov-frame - (-> *camera-combiner* inv-camera-rot) - (camera-pos) - f30-0 - 0.75 - 1.0 - (new 'static 'vector4w :z #xff :w #x80) + (when *display-camera-marks* + (if (-> *setting-control* cam-current use-point-of-interest) + (camera-cross + (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + (-> *setting-control* cam-current point-of-interest) + (new 'static 'vector4w :x #x80 :z #x80 :w #x80) + (meters 0.25) ) ) - (cond - ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) - (let ((f0-2 (* 0.5 (-> arg0 fov)))) - (camera-fov-frame - (the-as matrix (-> *camera-combiner* tracking)) - (-> arg0 trans) - f0-2 - 0.75 - 1.0 - (new 'static 'vector4w :y #xff :w #x80) - ) - ) - ) - (else - (let ((f0-4 (* 0.5 (-> arg0 fov)))) - (camera-fov-frame - (the-as matrix (-> arg0 tracking)) - (-> arg0 trans) - f0-4 - 0.75 - 1.0 - (new 'static 'vector4w :y #xff :w #x80) - ) - ) - ) - ) - (debug-draw-spline (-> arg0 position-spline)) - (let ((s5-1 (new-stack-vector0))) - (let ((s4-1 (new-stack-vector0))) - (new-stack-matrix0) - (cond - ((and (-> arg0 next-state) - (let ((v1-23 (-> arg0 next-state name))) - (or (= v1-23 'cam-fixed) (= v1-23 'cam-eye) (= v1-23 'cam-point-watch) (= v1-23 'cam-free-floating)) - ) - ) - (let ((v1-24 s5-1)) - (let ((a0-11 (-> arg0 trans)) - (a1-8 (-> *camera* local-down)) - (f0-5 4096.0) - ) - (.lvf vf2 (&-> a1-8 quad)) - (.lvf vf1 (&-> a0-11 quad)) - (let ((a0-12 f0-5)) - (.mov vf3 a0-12) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-24 quad) vf4) - ) - (camera-line (-> arg0 trans) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) - (camera-line - (-> *camera-combiner* tracking follow-pt) - (-> arg0 trans) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (let ((v1-28 s5-1)) - (let ((a0-17 (-> *camera-combiner* tracking follow-pt)) - (a1-12 (-> *camera* local-down)) - (f0-6 4096.0) - ) - (.lvf vf2 (&-> a1-12 quad)) - (.lvf vf1 (&-> a0-17 quad)) - (let ((a0-18 f0-6)) - (.mov vf3 a0-18) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-28 quad) vf4) - ) - (camera-line - (-> *camera-combiner* tracking follow-pt) - s5-1 - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - ) - (else - (camera-line - (-> arg0 tracking follow-pt) - (-> arg0 trans) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (let ((v1-31 s5-1)) - (let ((a0-21 (-> arg0 tracking follow-pt)) - (a1-16 (-> *camera* local-down)) - (f0-7 4096.0) - ) - (.lvf vf2 (&-> a1-16 quad)) - (.lvf vf1 (&-> a0-21 quad)) - (let ((a0-22 f0-7)) - (.mov vf3 a0-22) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-31 quad) vf4) - ) - (camera-line (-> arg0 tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - ) - (set! (-> s4-1 quad) (-> arg0 trans quad)) - (cond - ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) - (let ((v1-35 s5-1)) - (let ((a0-27 s4-1) - (a1-19 (-> *camera-combiner* tracking)) - (f0-8 2048.0) - ) - (.lvf vf2 (&-> a1-19 inv-mat vector 0 quad)) - (.lvf vf1 (&-> a0-27 quad)) - (let ((a0-28 f0-8)) - (.mov vf3 a0-28) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-35 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) - (let ((v1-36 s5-1)) - (let ((a0-30 s4-1) - (a1-22 (&-> *camera-combiner* stack 176)) - (f0-9 2048.0) - ) - (.lvf vf2 a1-22) - (.lvf vf1 (&-> a0-30 quad)) - (let ((a0-31 f0-9)) - (.mov vf3 a0-31) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-36 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) - (let ((v1-37 s5-1)) - (let ((a0-33 s4-1) - (a1-25 (&-> *camera-combiner* stack 192)) - (f0-10 2048.0) - ) - (.lvf vf2 a1-25) - (.lvf vf1 (&-> a0-33 quad)) - (let ((a0-34 f0-10)) - (.mov vf3 a0-34) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-37 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) - ) - (else - (let ((v1-39 s5-1)) - (let ((a0-36 s4-1) - (a1-27 (-> arg0 tracking)) - (f0-11 2048.0) - ) - (.lvf vf2 (&-> a1-27 inv-mat vector 0 quad)) - (.lvf vf1 (&-> a0-36 quad)) - (let ((a0-37 f0-11)) - (.mov vf3 a0-37) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-39 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) - (let ((v1-40 s5-1)) - (let ((a0-39 s4-1) - (a1-29 (&-> arg0 stack 96)) - (f0-12 2048.0) - ) - (.lvf vf2 a1-29) - (.lvf vf1 (&-> a0-39 quad)) - (let ((a0-40 f0-12)) - (.mov vf3 a0-40) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-40 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) - (let ((v1-41 s5-1)) - (let ((a0-42 s4-1) - (a1-31 (&-> arg0 stack 112)) - (f0-13 2048.0) - ) - (.lvf vf2 a1-31) - (.lvf vf1 (&-> a0-42 quad)) - (let ((a0-43 f0-13)) - (.mov vf3 a0-43) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-41 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) - ) - ) - ) - (vector--float*! - s5-1 - (-> *camera* tpos-curr) - (-> *camera* local-down) - (-> *setting-control* cam-current foot-offset) - ) - (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) - (vector--float*! - s5-1 - (-> *camera* tpos-curr) - (-> *camera* local-down) - (-> *setting-control* cam-current head-offset) - ) - (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) - ) - (cond - ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-string)) - (camera-sphere (-> arg0 desired-pos) 512.0 (new 'static 'vector4w :z #xff :w #x80)) - (camera-line-rel (-> *camera* tpos-curr-adj) (-> arg0 view-flat) (new 'static 'vector4w :z #xff :w #x80)) - (camera-line - (-> arg0 string-trans) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) - (new 'static 'vector4w :y #xff :w #x80) - ) - (camera-line - (-> arg0 los-last-pos) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) - (new 'static 'vector4w :x #xff :w #x80) - ) - ) - ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-circular)) - (let ((a1-45 (new-stack-vector0))) - (let ((v1-66 a1-45)) - (let ((a0-55 (-> arg0 pivot-pt)) - (a2-35 (-> *camera* local-down)) - (f0-16 4096.0) - ) - (.lvf vf2 (&-> a2-35 quad)) - (.lvf vf1 (&-> a0-55 quad)) - (let ((a0-56 f0-16)) - (.mov vf3 a0-56) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-66 quad) vf4) - ) - (camera-line (-> arg0 pivot-pt) a1-45 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - (camera-line (-> arg0 pivot-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-spline)) - (let ((s5-2 (new 'stack 'curve)) - (s4-2 (res-lump-struct (-> arg0 cam-entity) 'spline-offset structure)) - ) - (if (not s4-2) - (set! s4-2 (new-stack-vector0)) - ) - (when (get-curve-data! (-> arg0 cam-entity) s5-2 'campath 'campath-k -1000000000.0) - (let ((s3-0 (new-stack-vector0)) - (s2-0 (new-stack-vector0)) - (gp-1 (res-lump-data (-> arg0 cam-entity) 'campoints pointer :time 1.0)) - ) - (curve-get-pos! s2-0 0.0 s5-2) - (vector+! s2-0 s2-0 (the-as vector s4-2)) - (dotimes (s1-0 8) - (set! (-> s3-0 quad) (-> s2-0 quad)) - (curve-get-pos! s2-0 (* 0.125 (the float (+ s1-0 1))) s5-2) - (vector+! s2-0 s2-0 (the-as vector s4-2)) - (camera-line s3-0 s2-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) - ) - (dotimes (s1-1 (-> s5-2 num-cverts)) - (vector+! s3-0 (-> s5-2 cverts s1-1) (the-as vector s4-2)) - (vector+! s2-0 (-> s5-2 cverts (mod (+ s1-1 1) (-> s5-2 num-cverts))) (the-as vector s4-2)) - (camera-line s3-0 s2-0 (new 'static 'vector4w :y #xff :z #xff :w #x80)) - ) - (if gp-1 - (camera-line - (the-as vector (&+ gp-1 0)) - (the-as vector (&+ gp-1 16)) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (camera-line - (-> s5-2 cverts 0) - (-> s5-2 cverts (+ (-> s5-2 num-cverts) -1)) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - ) - ) - ) - ) - ) + (let ((f30-0 (* 0.5 (-> *camera-combiner* fov)))) + (camera-fov-frame + (-> *camera-combiner* inv-camera-rot) + (camera-pos) + f30-0 + 0.75 + 1.0 + (new 'static 'vector4w :z #xff :w #x80) ) ) - 0 - (none) + (cond + ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) + (let ((f0-2 (* 0.5 (-> arg0 fov)))) + (camera-fov-frame + (the-as matrix (-> *camera-combiner* tracking)) + (-> arg0 trans) + f0-2 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80) + ) + ) + ) + (else + (let ((f0-4 (* 0.5 (-> arg0 fov)))) + (camera-fov-frame + (the-as matrix (-> arg0 tracking)) + (-> arg0 trans) + f0-4 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80) + ) + ) + ) + ) + (debug-draw-spline (-> arg0 position-spline)) + (let ((s5-1 (new-stack-vector0))) + (let ((s4-1 (new-stack-vector0))) + (new-stack-matrix0) + (cond + ((and (-> arg0 next-state) + (let ((v1-23 (-> arg0 next-state name))) + (or (= v1-23 'cam-fixed) (= v1-23 'cam-eye) (= v1-23 'cam-point-watch) (= v1-23 'cam-free-floating)) + ) + ) + (vector+float*! s5-1 (-> arg0 trans) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 trans) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) + (camera-line + (-> *camera-combiner* tracking follow-pt) + (-> arg0 trans) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (vector+float*! s5-1 (-> *camera-combiner* tracking follow-pt) (-> *camera* local-down) 4096.0) + (camera-line + (-> *camera-combiner* tracking follow-pt) + s5-1 + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + ) + (else + (camera-line + (-> arg0 tracking follow-pt) + (-> arg0 trans) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (vector+float*! s5-1 (-> arg0 tracking follow-pt) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ) + (set! (-> s4-1 quad) (-> arg0 trans quad)) + (cond + ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) + (vector+float*! s5-1 s4-1 (the-as vector (-> *camera-combiner* tracking)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> *camera-combiner* stack 176)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> *camera-combiner* stack 192)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) + ) + (else + (vector+float*! s5-1 s4-1 (the-as vector (-> arg0 tracking)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> arg0 stack 96)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> arg0 stack 112)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) + ) + ) + ) + (vector--float*! + s5-1 + (-> *camera* tpos-curr) + (-> *camera* local-down) + (-> *setting-control* cam-current foot-offset) + ) + (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) + (vector--float*! + s5-1 + (-> *camera* tpos-curr) + (-> *camera* local-down) + (-> *setting-control* cam-current head-offset) + ) + (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) + ) + (cond + ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-string)) + (camera-sphere (-> arg0 desired-pos) 512.0 (new 'static 'vector4w :z #xff :w #x80)) + (camera-line-rel (-> *camera* tpos-curr-adj) (-> arg0 view-flat) (new 'static 'vector4w :z #xff :w #x80)) + (camera-line + (-> arg0 string-trans) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :y #xff :w #x80) + ) + (camera-line + (-> arg0 los-last-pos) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :x #xff :w #x80) + ) + ) + ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-circular)) + (let ((a1-45 (new-stack-vector0))) + (vector+float*! a1-45 (-> arg0 pivot-pt) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 pivot-pt) a1-45 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + (camera-line (-> arg0 pivot-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-spline)) + (let ((s5-2 (new 'stack 'curve)) + (s4-2 (res-lump-struct (-> arg0 cam-entity) 'spline-offset structure)) + ) + (if (not s4-2) + (set! s4-2 (new-stack-vector0)) + ) + (when (get-curve-data! (-> arg0 cam-entity) s5-2 'campath 'campath-k -1000000000.0) + (let ((s3-0 (new-stack-vector0)) + (s2-0 (new-stack-vector0)) + (gp-1 (res-lump-data (-> arg0 cam-entity) 'campoints pointer :time 1.0)) + ) + (curve-get-pos! s2-0 0.0 s5-2) + (vector+! s2-0 s2-0 (the-as vector s4-2)) + (dotimes (s1-0 8) + (set! (-> s3-0 quad) (-> s2-0 quad)) + (curve-get-pos! s2-0 (* 0.125 (the float (+ s1-0 1))) s5-2) + (vector+! s2-0 s2-0 (the-as vector s4-2)) + (camera-line s3-0 s2-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) + ) + (dotimes (s1-1 (-> s5-2 num-cverts)) + (vector+! s3-0 (-> s5-2 cverts s1-1) (the-as vector s4-2)) + (vector+! s2-0 (-> s5-2 cverts (mod (+ s1-1 1) (-> s5-2 num-cverts))) (the-as vector s4-2)) + (camera-line s3-0 s2-0 (new 'static 'vector4w :y #xff :z #xff :w #x80)) + ) + (if gp-1 + (camera-line + (the-as vector (&+ gp-1 0)) + (the-as vector (&+ gp-1 16)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (camera-line + (-> s5-2 cverts 0) + (-> s5-2 cverts (+ (-> s5-2 num-cverts) -1)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + ) + ) + ) + ) + ) + ) ) + 0 + (none) ) (defun master-draw-coordinates ((arg0 vector)) @@ -1462,7 +1235,15 @@ (set! (-> a0-3 w) 1.0) (vector+! a1-4 v1-4 a0-3) ) - (add-debug-line #t (bucket-id debug-no-zbuf1) gp-0 s5-0 (new 'static 'rgba :r #xff :a #x80) #f (the-as rgba -1)) + (add-debug-line + #t + (bucket-id debug-no-zbuf1) + gp-0 + s5-0 + (new 'static 'rgba :r #xff :a #x80) + #f + (the-as rgba -1) + ) (let ((a1-7 s5-0) (v1-5 gp-0) (a0-5 s5-0) @@ -1473,7 +1254,15 @@ (set! (-> a0-5 w) 1.0) (vector+! a1-7 v1-5 a0-5) ) - (add-debug-line #t (bucket-id debug-no-zbuf1) gp-0 s5-0 (new 'static 'rgba :g #xff :a #x80) #f (the-as rgba -1)) + (add-debug-line + #t + (bucket-id debug-no-zbuf1) + gp-0 + s5-0 + (new 'static 'rgba :g #xff :a #x80) + #f + (the-as rgba -1) + ) (let ((a1-10 s5-0) (v1-6 gp-0) (a0-7 s5-0) @@ -1484,7 +1273,15 @@ (set! (-> a0-7 w) 1.0) (vector+! a1-10 v1-6 a0-7) ) - (add-debug-line #t (bucket-id debug-no-zbuf1) gp-0 s5-0 (new 'static 'rgba :b #xff :a #x80) #f (the-as rgba -1)) + (add-debug-line + #t + (bucket-id debug-no-zbuf1) + gp-0 + s5-0 + (new 'static 'rgba :b #xff :a #x80) + #f + (the-as rgba -1) + ) (when arg0 (set! (-> s5-0 quad) (-> arg0 quad)) (vector-normalize! s5-0 4096.0) @@ -1754,117 +1551,63 @@ ) (defun camera-master-debug ((arg0 camera-master)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when *display-cam-other* - (let ((f0-1 (* 0.5 (-> *camera-other-fov* data)))) - (camera-fov-frame - *camera-other-matrix* - *camera-other-trans* - f0-1 - 0.75 - 1.0 - (new 'static 'vector4w :x #xff :w #x80) - ) - ) - (camera-line *camera-other-trans* *camera-other-root* (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-0 *camera-other-trans*) - ) - (let ((v1-5 s4-0)) - (let ((a0-3 s5-0) - (a1-3 (-> *camera-other-matrix* vector)) - (f0-2 2048.0) - ) - (.lvf vf2 (&-> a1-3 0 quad)) - (.lvf vf1 (&-> a0-3 quad)) - (let ((a0-4 f0-2)) - (.mov vf3 a0-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-5 quad) vf4) - ) - (camera-line s5-0 s4-0 (new 'static 'vector4w :x #xff :w #x80)) - (let ((v1-6 s4-0)) - (let ((a0-6 s5-0) - (a1-6 (-> *camera-other-matrix* vector 1)) - (f0-3 2048.0) - ) - (.lvf vf2 (&-> a1-6 quad)) - (.lvf vf1 (&-> a0-6 quad)) - (let ((a0-7 f0-3)) - (.mov vf3 a0-7) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-6 quad) vf4) - ) - (camera-line s5-0 s4-0 (new 'static 'vector4w :y #xff :w #x80)) - (let ((v1-7 s4-0)) - (let ((a0-9 s5-0) - (a1-9 (-> *camera-other-matrix* vector 2)) - (f0-4 2048.0) - ) - (.lvf vf2 (&-> a1-9 quad)) - (.lvf vf1 (&-> a0-9 quad)) - (let ((a0-10 f0-4)) - (.mov vf3 a0-10) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-7 quad) vf4) - ) - (camera-line s5-0 s4-0 (new 'static 'vector4w :z #xff :w #x80)) + (when *display-cam-other* + (let ((f0-1 (* 0.5 (-> *camera-other-fov* data)))) + (camera-fov-frame + *camera-other-matrix* + *camera-other-trans* + f0-1 + 0.75 + 1.0 + (new 'static 'vector4w :x #xff :w #x80) ) ) - (when *display-camera-last-attacker* - (format *stdcon* "last attacker '") - (let ((v1-13 (handle->process (-> last-try-to-look-at-data who)))) - (if v1-13 - (format *stdcon* "~S" (-> v1-13 name)) - ) - ) - (format *stdcon* "'~%") + (camera-line *camera-other-trans* *camera-other-root* (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s5-0 *camera-other-trans*) + ) + (vector+float*! s4-0 s5-0 (the-as vector (-> *camera-other-matrix* vector)) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 1) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 2) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :z #xff :w #x80)) ) - (when *display-camera-old-stats* - (format - *stdcon* - "old ~S cpu ~D old vu ~D (go to menu before comparing)~%" - *camera-old-level* - *camera-old-cpu* - *camera-old-vu* - ) - (format *stdcon* "old tfrag-mem ~D~%" (sar *camera-old-tfrag-bytes* 10)) - (format *stdcon* "~S~%" *camera-old-stat-string-tfrag-near*) - (format *stdcon* "~S~%" *camera-old-stat-string-tfrag*) - (format *stdcon* "~S~%" *camera-old-stat-string-total*) - ) - (if *display-cam-collide-history* - (cam-collision-record-draw) - ) - (if *display-cam-master-marks* - (debug-draw-spline (-> arg0 target-spline)) - ) - (if *display-xyz-axes* - (master-draw-coordinates (the-as vector #f)) - ) - (cam-debug-draw-tris) - 0 - (none) ) + (when *display-camera-last-attacker* + (format *stdcon* "last attacker '") + (let ((v1-16 (handle->process (-> last-try-to-look-at-data who)))) + (if v1-16 + (format *stdcon* "~S" (-> v1-16 name)) + ) + ) + (format *stdcon* "'~%") + ) + (when *display-camera-old-stats* + (format + *stdcon* + "old ~S cpu ~D old vu ~D (go to menu before comparing)~%" + *camera-old-level* + *camera-old-cpu* + *camera-old-vu* + ) + (format *stdcon* "old tfrag-mem ~D~%" (sar *camera-old-tfrag-bytes* 10)) + (format *stdcon* "~S~%" *camera-old-stat-string-tfrag-near*) + (format *stdcon* "~S~%" *camera-old-stat-string-tfrag*) + (format *stdcon* "~S~%" *camera-old-stat-string-total*) + ) + (if *display-cam-collide-history* + (cam-collision-record-draw) + ) + (if *display-cam-master-marks* + (debug-draw-spline (-> arg0 target-spline)) + ) + (if *display-xyz-axes* + (master-draw-coordinates (the-as vector #f)) + ) + (cam-debug-draw-tris) + 0 + (none) ) (defun debug-set-camera-pos-rot! ((arg0 vector) (arg1 matrix)) @@ -1930,6 +1673,3 @@ ) ) - - - diff --git a/goal_src/jak2/engine/camera/cam-interface.gc b/goal_src/jak2/engine/camera/cam-interface.gc index 12b64ddeaa..dfd7b76b22 100644 --- a/goal_src/jak2/engine/camera/cam-interface.gc +++ b/goal_src/jak2/engine/camera/cam-interface.gc @@ -8,42 +8,18 @@ ;; DECOMP BEGINS (defun position-in-front-of-camera! ((arg0 vector) (arg1 float) (arg2 float)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (vector-float*! arg0 (-> *math-camera* inv-camera-rot vector 2) arg1) - (let ((v1-2 arg0)) - (let ((a1-1 arg0) - (a3-3 (-> *math-camera* inv-camera-rot vector 1)) - (f0-1 arg2) - ) - (.lvf vf2 (&-> a3-3 quad)) - (.lvf vf1 (&-> a1-1 quad)) - (let ((a1-2 f0-1)) - (.mov vf3 a1-2) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-2 quad) vf4) - ) - (vector+! arg0 arg0 (-> *math-camera* trans)) - arg0 - ) + (vector-float*! arg0 (-> *math-camera* inv-camera-rot vector 2) arg1) + (vector+float*! arg0 arg0 (-> *math-camera* inv-camera-rot vector 1) arg2) + (vector+! arg0 arg0 (-> *math-camera* trans)) + arg0 ) (defun position-in-front-of-screen! ((arg0 vector) (arg1 float) (arg2 vector)) (let ((a2-1 (vector-negate! (new 'stack-no-clear 'vector) (-> *math-camera* inv-camera-rot vector 2))) (a1-3 (vector-float*! (new 'stack-no-clear 'vector) (-> *math-camera* inv-camera-rot vector 2) arg1)) ) - (vector+! (the-as vector a1-3) (the-as vector a1-3) (-> *math-camera* trans)) - (reverse-transform-point! arg0 (the-as vector a1-3) a2-1 arg2) + (vector+! a1-3 a1-3 (-> *math-camera* trans)) + (reverse-transform-point! arg0 a1-3 a2-1 arg2) ) arg0 ) diff --git a/goal_src/jak2/engine/camera/cam-layout.gc b/goal_src/jak2/engine/camera/cam-layout.gc index d3f216d212..99e5541de7 100644 --- a/goal_src/jak2/engine/camera/cam-layout.gc +++ b/goal_src/jak2/engine/camera/cam-layout.gc @@ -19,8 +19,10 @@ ;; this file is debug only (declare-file (debug)) (when *debug-segment* +;; definition for symbol *camera-layout-blink*, type symbol (define *camera-layout-blink* #f) +;; definition of type cam-layout-bank (deftype cam-layout-bank (basic) ((spline-t float :offset-assert 4) (spline-step float :offset-assert 8) @@ -34,6 +36,7 @@ :flag-assert #x90000001c ) +;; definition for method 3 of type cam-layout-bank (defmethod inspect cam-layout-bank ((obj cam-layout-bank)) (when (not obj) (set! obj obj) @@ -50,6 +53,7 @@ obj ) +;; definition for symbol *CAM_LAYOUT-bank*, type cam-layout-bank (define *CAM_LAYOUT-bank* (new 'static 'cam-layout-bank :spline-t 0.01 :spline-step 0.0016666667 @@ -60,8 +64,10 @@ ) ) +;; definition for symbol *camera-layout-message-ypos*, type int (define *camera-layout-message-ypos* 30) +;; definition of type clm-basic (deftype clm-basic (basic) () :method-count-assert 9 @@ -69,6 +75,7 @@ :flag-assert #x900000004 ) +;; definition for method 3 of type clm-basic (defmethod inspect clm-basic ((obj clm-basic)) (when (not obj) (set! obj obj) @@ -79,6 +86,7 @@ obj ) +;; definition of type clm-item-action (deftype clm-item-action (structure) ((button uint64 :offset-assert 0) (options uint64 :offset-assert 8) @@ -94,6 +102,7 @@ :flag-assert #x90000001c ) +;; definition for method 3 of type clm-item-action (defmethod inspect clm-item-action ((obj clm-item-action)) (when (not obj) (set! obj obj) @@ -109,6 +118,7 @@ obj ) +;; definition of type clm-item (deftype clm-item (clm-basic) ((description string :offset-assert 4) (button-symbol symbol :offset-assert 8) @@ -119,6 +129,7 @@ :flag-assert #x90000002c ) +;; definition for method 3 of type clm-item (defmethod inspect clm-item ((obj clm-item)) (when (not obj) (set! obj obj) @@ -132,6 +143,7 @@ obj ) +;; definition of type clm-list-item (deftype clm-list-item (basic) ((description string :offset-assert 4) (track-val symbol :offset-assert 8) @@ -148,6 +160,7 @@ :flag-assert #x90000001c ) +;; definition for method 3 of type clm-list-item (defmethod inspect clm-list-item ((obj clm-list-item)) (when (not obj) (set! obj obj) @@ -164,6 +177,7 @@ obj ) +;; definition of type clm-list (deftype clm-list (clm-basic) ((tracker symbol :offset-assert 4) (cur-list-item int32 :offset-assert 8) @@ -174,6 +188,7 @@ :flag-assert #x900000010 ) +;; definition for method 3 of type clm-list (defmethod inspect clm-list ((obj clm-list)) (when (not obj) (set! obj obj) @@ -187,6 +202,7 @@ obj ) +;; definition of type clm (deftype clm (basic) ((title string :offset-assert 4) (items (array clm-basic) :offset-assert 8) @@ -196,6 +212,7 @@ :flag-assert #x90000000c ) +;; definition for method 3 of type clm (defmethod inspect clm ((obj clm)) (when (not obj) (set! obj obj) @@ -208,14 +225,19 @@ obj ) +;; definition for symbol *volume-point-current*, type int (define *volume-point-current* 0) +;; definition for symbol *volume-point*, type vector-array (define *volume-point* (new 'debug 'vector-array 1000)) +;; definition for symbol *volume-normal-current*, type int (define *volume-normal-current* 0) +;; definition for symbol *volume-normal*, type vector-array (define *volume-normal* (new 'debug 'vector-array 600)) +;; definition of type volume-descriptor-array (deftype volume-descriptor-array (inline-array-class) ((data plane-volume :inline :dynamic :offset 16) ) @@ -224,6 +246,7 @@ :flag-assert #x900000010 ) +;; definition for method 3 of type volume-descriptor-array (defmethod inspect volume-descriptor-array ((obj volume-descriptor-array)) (when (not obj) (set! obj obj) @@ -237,12 +260,16 @@ obj ) +;; failed to figure out what this is: (set! (-> volume-descriptor-array heap-base) (the-as uint 24)) +;; definition for symbol *volume-descriptor-current*, type int (define *volume-descriptor-current* 0) +;; definition for symbol *volume-descriptor*, type vol-control (define *volume-descriptor* (the-as vol-control (new 'debug 'volume-descriptor-array 100))) +;; definition of type cam-layout (deftype cam-layout (process) ((cam-entity entity-camera :offset-assert 128) (num-entities int32 :offset-assert 132) @@ -262,6 +289,7 @@ ) ) +;; definition for method 3 of type cam-layout (defmethod inspect cam-layout ((obj cam-layout)) (when (not obj) (set! obj obj) @@ -282,6 +310,7 @@ obj ) +;; definition for function cam-layout-print (defun cam-layout-print ((arg0 int) (arg1 int) (arg2 string)) (let* ((s5-0 (-> *display* frames (-> *display* on-screen) debug-buf)) (gp-0 (-> s5-0 base)) @@ -304,6 +333,7 @@ ) ) +;; definition for function cam-layout-intersect-dist (defun cam-layout-intersect-dist ((arg0 vector) (arg1 vector) (arg2 vector)) (let ((f0-1 (vector-dot arg1 arg0)) (f1-1 (vector-dot arg2 arg0)) @@ -315,6 +345,8 @@ ) ) +;; definition for function cam-layout-entity-volume-info-create +;; INFO: Used lq/sq ;; WARN: Stack slot offset 164 signed mismatch ;; WARN: Stack slot offset 164 signed mismatch ;; WARN: Stack slot offset 164 signed mismatch @@ -351,230 +383,168 @@ (sv-272 int) (sv-288 int) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 0)) - (until #f - (set! sv-16 (new 'static 'res-tag)) - (let ((s3-0 (the-as (inline-array vector) ((method-of-type res-lump get-property-data) - arg0 - arg1 - 'exact - (the float s4-0) - (the-as pointer #f) - (& sv-16) - *res-static-buf* - ) - ) - ) + (let ((s4-0 0)) + (until #f + (set! sv-16 (new 'static 'res-tag)) + (let ((s3-0 (the-as (inline-array vector) ((method-of-type res-lump get-property-data) + arg0 + arg1 + 'exact + (the float s4-0) + (the-as pointer #f) + (& sv-16) + *res-static-buf* + ) + ) + ) + ) + (cond + (s3-0 + (when (>= *volume-descriptor-current* 100) + (format 0 "ERROR : camera editing out of volume descriptors~%") + (return #f) ) - (cond - (s3-0 - (when (>= *volume-descriptor-current* 100) - (format 0 "ERROR : camera editing out of volume descriptors~%") - (return #f) - ) - (let ((s2-0 (-> *volume-descriptor* pos-vol *volume-descriptor-current*))) - (set! (-> s2-0 volume-type) arg1) - (set! (-> s2-0 point-count) 0) - (set! (-> s2-0 first-point) (the-as (pointer vector) (-> *volume-point* data *volume-point-current*))) - (set! (-> s2-0 normal-count) 0) - (set! (-> s2-0 first-normal) (the-as (pointer vector) (-> *volume-normal* data *volume-normal-current*))) - (set! *volume-descriptor-current* (+ *volume-descriptor-current* 1)) - (+! (-> self num-volumes) 1) - (dotimes (s1-0 (the-as int (-> sv-16 elt-count))) - (set! sv-192 (new 'stack-no-clear 'vector)) - (set! (-> sv-192 quad) (the-as uint128 0)) - (set! sv-208 (new 'stack-no-clear 'vector)) - (set! (-> sv-208 quad) (the-as uint128 0)) - (set! sv-224 (new 'stack-no-clear 'vector)) - (set! (-> sv-224 quad) (the-as uint128 0)) - (set! sv-240 (new 'stack-no-clear 'vector)) - (set! (-> sv-240 quad) (the-as uint128 0)) - 0.0 - 0.0 - 0.0 - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (let ((s0-0 (new-stack-vector0))) - (set! sv-256 0) - (set! sv-272 0) - (while (< sv-272 (the-as int (-> sv-16 elt-count))) - (when (!= s1-0 sv-272) - (vector-float*! sv-192 (-> s3-0 sv-272) (-> s3-0 sv-272 w)) - (vector-cross! sv-208 (-> s3-0 sv-272) (-> s3-0 s1-0)) - (vector-normalize! sv-208 1.0) - (vector-cross! sv-224 sv-208 (-> s3-0 sv-272)) - (vector-normalize! sv-224 1.0) - (let ((f0-6 (cam-layout-intersect-dist (-> s3-0 s1-0) sv-192 sv-224))) - (when (!= f0-6 409600000.0) - (let ((v1-40 sv-240)) - (let ((a0-18 sv-192)) - (.lvf vf2 (&-> sv-224 quad)) - (.lvf vf1 (&-> a0-18 quad)) - ) - (let ((a0-19 f0-6)) - (.mov vf3 a0-19) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-40 quad) vf4) - ) - (set! sv-160 (new-stack-vector0)) - (set! sv-164 0.0) - (set! sv-168 0) - (set! sv-176 (new-stack-vector0)) - (set! (-> sv-160 quad) (-> sv-240 quad)) - (set! sv-288 0) - (while (< sv-288 (the-as int (-> sv-16 elt-count))) - (when (and (!= sv-288 s1-0) (!= sv-288 sv-272)) - (let ((f0-8 (cam-layout-intersect-dist (-> s3-0 sv-288) sv-160 sv-208))) - (cond - ((= f0-8 409600000.0) - ) - ((zero? sv-168) - (let ((v1-54 sv-160)) - (let ((a0-25 sv-160)) - (.lvf vf2 (&-> sv-208 quad)) - (.lvf vf1 (&-> a0-25 quad)) - ) - (let ((a0-26 f0-8)) - (.mov vf3 a0-26) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-54 quad) vf4) - ) - (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) - (set! sv-164 8192000.0) - (set! sv-168 1) - ) - ((begin (vector-float*! sv-240 sv-208 f0-8) (>= (vector-dot sv-240 sv-176) 0.0)) - ) - ((>= (vector-dot sv-240 (-> s3-0 sv-288)) 0.0) - (when (< (fabs f0-8) (fabs (the-as float sv-164))) - (set! sv-164 f0-8) - (set! sv-168 (+ sv-168 1)) - ) - ) - (else - (let ((v1-71 sv-160)) - (let ((a0-34 sv-160) - (a1-17 sv-208) - (f1-8 f0-8) - ) - (.lvf vf2 (&-> a1-17 quad)) - (.lvf vf1 (&-> a0-34 quad)) - (let ((a0-35 f1-8)) - (.mov vf3 a0-35) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-71 quad) vf4) - ) - (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) - (set! sv-168 (+ sv-168 1)) - (if (< (fabs f0-8) (fabs (the-as float sv-164))) - (set! sv-164 (- (the-as float sv-164) f0-8)) - (set! sv-164 0.0) - ) - ) - ) - ) - ) - (set! sv-288 (+ sv-288 1)) - ) - (cond - ((zero? sv-168) - ) - ((= (the-as float sv-164) 0.0) - ) - (else - (dotimes (v1-88 (the-as int (-> sv-16 elt-count))) - (when (and (!= v1-88 s1-0) (!= v1-88 sv-272)) - (if (< 4096.0 (- (vector-dot sv-160 (-> s3-0 v1-88)) (-> s3-0 v1-88 w))) - (goto cfg-47) - ) - ) - ) - (let ((v1-92 sv-240)) - (let ((a0-58 sv-160) - (a1-20 sv-208) - (f0-14 sv-164) - ) - (.lvf vf2 (&-> a1-20 quad)) - (.lvf vf1 (&-> a0-58 quad)) - (let ((a0-59 (the-as float f0-14))) - (.mov vf3 a0-59) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-92 quad) vf4) - ) + (let ((s2-0 (-> *volume-descriptor* pos-vol *volume-descriptor-current*))) + (set! (-> s2-0 volume-type) arg1) + (set! (-> s2-0 point-count) 0) + (set! (-> s2-0 first-point) (the-as (pointer vector) (-> *volume-point* data *volume-point-current*))) + (set! (-> s2-0 normal-count) 0) + (set! (-> s2-0 first-normal) (the-as (pointer vector) (-> *volume-normal* data *volume-normal-current*))) + (set! *volume-descriptor-current* (+ *volume-descriptor-current* 1)) + (+! (-> self num-volumes) 1) + (dotimes (s1-0 (the-as int (-> sv-16 elt-count))) + (set! sv-192 (new 'stack-no-clear 'vector)) + (set! (-> sv-192 quad) (the-as uint128 0)) + (set! sv-208 (new 'stack-no-clear 'vector)) + (set! (-> sv-208 quad) (the-as uint128 0)) + (set! sv-224 (new 'stack-no-clear 'vector)) + (set! (-> sv-224 quad) (the-as uint128 0)) + (set! sv-240 (new 'stack-no-clear 'vector)) + (set! (-> sv-240 quad) (the-as uint128 0)) + 0.0 + 0.0 + 0.0 + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (let ((s0-0 (new-stack-vector0))) + (set! sv-256 0) + (set! sv-272 0) + (while (< sv-272 (the-as int (-> sv-16 elt-count))) + (when (!= s1-0 sv-272) + (vector-float*! sv-192 (-> s3-0 sv-272) (-> s3-0 sv-272 w)) + (vector-cross! sv-208 (-> s3-0 sv-272) (-> s3-0 s1-0)) + (vector-normalize! sv-208 1.0) + (vector-cross! sv-224 sv-208 (-> s3-0 sv-272)) + (vector-normalize! sv-224 1.0) + (let ((f0-6 (cam-layout-intersect-dist (-> s3-0 s1-0) sv-192 sv-224))) + (when (!= f0-6 409600000.0) + (vector+float*! sv-240 sv-192 sv-224 f0-6) + (set! sv-160 (new-stack-vector0)) + (set! sv-164 0.0) + (set! sv-168 0) + (set! sv-176 (new-stack-vector0)) + (set! (-> sv-160 quad) (-> sv-240 quad)) + (set! sv-288 0) + (while (< sv-288 (the-as int (-> sv-16 elt-count))) + (when (and (!= sv-288 s1-0) (!= sv-288 sv-272)) + (let ((f0-8 (cam-layout-intersect-dist (-> s3-0 sv-288) sv-160 sv-208))) (cond - ((>= *volume-point-current* 999) - (format 0 "ERROR : camera editing out of volume points~%") + ((= f0-8 409600000.0) + ) + ((zero? sv-168) + (vector+float*! sv-160 sv-160 sv-208 f0-8) + (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) + (set! sv-164 8192000.0) + (set! sv-168 1) + ) + ((begin (vector-float*! sv-240 sv-208 f0-8) (>= (vector-dot sv-240 sv-176) 0.0)) + ) + ((>= (vector-dot sv-240 (-> s3-0 sv-288)) 0.0) + (when (< (fabs f0-8) (fabs (the-as float sv-164))) + (set! sv-164 f0-8) + (set! sv-168 (+ sv-168 1)) + ) ) (else - (set! (-> *volume-point* data *volume-point-current* quad) (-> sv-160 quad)) - (set! (-> *volume-point* data (+ *volume-point-current* 1) quad) (-> sv-240 quad)) - (set! *volume-point-current* (+ *volume-point-current* 2)) - (+! (-> s2-0 point-count) 2) + (vector+float*! sv-160 sv-160 sv-208 f0-8) + (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) + (set! sv-168 (+ sv-168 1)) + (if (< (fabs f0-8) (fabs (the-as float sv-164))) + (set! sv-164 (- (the-as float sv-164) f0-8)) + (set! sv-164 0.0) + ) ) ) - (vector+! s0-0 s0-0 sv-160) - (vector+! s0-0 s0-0 sv-240) - (set! sv-256 (+ sv-256 2)) - sv-256 ) ) + (set! sv-288 (+ sv-288 1)) + ) + (cond + ((zero? sv-168) + ) + ((= (the-as float sv-164) 0.0) + ) + (else + (dotimes (v1-91 (the-as int (-> sv-16 elt-count))) + (when (and (!= v1-91 s1-0) (!= v1-91 sv-272)) + (if (< 4096.0 (- (vector-dot sv-160 (-> s3-0 v1-91)) (-> s3-0 v1-91 w))) + (goto cfg-47) + ) + ) + ) + (vector+float*! sv-240 sv-160 sv-208 (the-as float sv-164)) + (cond + ((>= *volume-point-current* 999) + (format 0 "ERROR : camera editing out of volume points~%") + ) + (else + (set! (-> *volume-point* data *volume-point-current* quad) (-> sv-160 quad)) + (set! (-> *volume-point* data (+ *volume-point-current* 1) quad) (-> sv-240 quad)) + (set! *volume-point-current* (+ *volume-point-current* 2)) + (+! (-> s2-0 point-count) 2) + ) + ) + (vector+! s0-0 s0-0 sv-160) + (vector+! s0-0 s0-0 sv-240) + (set! sv-256 (+ sv-256 2)) + sv-256 + ) ) ) ) - (label cfg-47) - (set! sv-272 (+ sv-272 1)) ) - (when (nonzero? sv-256) - (vector-float*! s0-0 s0-0 (/ 1.0 (the float sv-256))) - (cond - ((>= *volume-normal-current* 599) - (format 0 "ERROR : camera editing out of volume normals~%") - ) - (else - (set! (-> *volume-normal* data *volume-normal-current* quad) (-> s0-0 quad)) - (set! (-> *volume-normal* data (+ *volume-normal-current* 1) quad) (-> s3-0 s1-0 quad)) - (set! *volume-normal-current* (+ *volume-normal-current* 2)) - (set! (-> s2-0 normal-count) (+ (-> s2-0 normal-count) 2)) - ) + (label cfg-47) + (set! sv-272 (+ sv-272 1)) + ) + (when (nonzero? sv-256) + (vector-float*! s0-0 s0-0 (/ 1.0 (the float sv-256))) + (cond + ((>= *volume-normal-current* 599) + (format 0 "ERROR : camera editing out of volume normals~%") + ) + (else + (set! (-> *volume-normal* data *volume-normal-current* quad) (-> s0-0 quad)) + (set! (-> *volume-normal* data (+ *volume-normal-current* 1) quad) (-> s3-0 s1-0 quad)) + (set! *volume-normal-current* (+ *volume-normal-current* 2)) + (set! (-> s2-0 normal-count) (+ (-> s2-0 normal-count) 2)) ) ) ) ) ) ) - (else - (return #f) - ) + ) + (else + (return #f) ) ) - (+! s4-0 1) ) + (+! s4-0 1) ) - #f ) + #f ) +;; definition for function cam-layout-entity-volume-info (defbehavior cam-layout-entity-volume-info cam-layout () (dotimes (gp-0 (-> self num-volumes)) (cond @@ -620,57 +590,38 @@ #f ) +;; definition for function v-slrp! +;; INFO: Used lq/sq (defun v-slrp! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s2-0 (new-stack-vector0)) - (s1-0 (new-stack-vector0)) - (s0-0 (new-stack-vector0)) - ) - 0.0 - 0.0 - 0.0 - 0.0 - (cond - ((< 1.0 arg3) - (set! arg3 1.0) - ) - ((< arg3 0.0) - (set! arg3 0.0) - ) - ) - (vector-normalize-copy! s2-0 arg1 1.0) - (vector-normalize-copy! s1-0 arg2 1.0) - (vector-cross! s0-0 s2-0 s1-0) - (let* ((f30-0 (vector-length s0-0)) - (f28-0 (asin f30-0)) - ) - (vector-float*! arg0 arg1 (/ (sin (* (- 1.0 arg3) f28-0)) f30-0)) - (let ((s3-1 arg0)) - (let ((f0-14 (/ (sin (* arg3 f28-0)) f30-0))) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg0 quad)) - (let ((v1-9 f0-14)) - (.mov vf3 v1-9) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s3-1 quad) vf4) - s3-1 - ) + (let ((s2-0 (new-stack-vector0)) + (s1-0 (new-stack-vector0)) + (s0-0 (new-stack-vector0)) ) + 0.0 + 0.0 + 0.0 + 0.0 + (cond + ((< 1.0 arg3) + (set! arg3 1.0) + ) + ((< arg3 0.0) + (set! arg3 0.0) + ) + ) + (vector-normalize-copy! s2-0 arg1 1.0) + (vector-normalize-copy! s1-0 arg2 1.0) + (vector-cross! s0-0 s2-0 s1-0) + (let* ((f30-0 (vector-length s0-0)) + (f28-0 (asin f30-0)) + ) + (vector-float*! arg0 arg1 (/ (sin (* (- 1.0 arg3) f28-0)) f30-0)) + (vector+float*! arg0 arg0 arg2 (/ (sin (* arg3 f28-0)) f30-0)) ) ) ) +;; definition of type interp-test-info (deftype interp-test-info (structure) ((from vector :inline :offset-assert 0) (to vector :inline :offset-assert 16) @@ -684,6 +635,7 @@ :flag-assert #x90000003c ) +;; definition for method 3 of type interp-test-info (defmethod inspect interp-test-info ((obj interp-test-info)) (when (not obj) (set! obj obj) @@ -700,6 +652,8 @@ obj ) +;; definition for function interp-test +;; INFO: Used lq/sq (defun interp-test ((arg0 (function vector vector vector float vector float none)) (arg1 interp-test-info)) (let ((s3-0 (new-stack-vector0)) (s5-0 (new-stack-vector0)) @@ -727,6 +681,8 @@ (none) ) +;; definition for function interp-test-deg +;; INFO: Used lq/sq (defun interp-test-deg ((arg0 (function vector vector vector vector float none)) (arg1 interp-test-info)) (let ((s3-0 (new-stack-vector0)) (s5-0 (new-stack-vector0)) @@ -754,6 +710,8 @@ (none) ) +;; definition for function cam-layout-entity-info +;; INFO: Used lq/sq ;; WARN: Function cam-layout-entity-info has a return type of none, but the expression builder found a return statement. (defun cam-layout-entity-info ((arg0 entity-actor)) (if (not arg0) @@ -1015,6 +973,7 @@ (none) ) +;; definition for function clmf-button-test (defun clmf-button-test () "Displays the message `button test`" (cam-layout-print 16 *camera-layout-message-ypos* "button test") @@ -1023,6 +982,7 @@ #f ) +;; definition for function clmf-bna (defun clmf-bna () "Displays the message `button not available`" (cam-layout-print 16 *camera-layout-message-ypos* "button not applicable") @@ -1031,6 +991,7 @@ #t ) +;; definition for function clmf-implement (defun clmf-implement () "Displays the message `button not implemented yet`" (cam-layout-print 16 *camera-layout-message-ypos* "button not implemented yet") @@ -1039,6 +1000,8 @@ #t ) +;; definition for function clmf-input +;; INFO: Used lq/sq (defun clmf-input ((arg0 vector) (arg1 vector) (arg2 int)) (vector-reset! arg0) (vector-reset! arg1) @@ -1085,138 +1048,120 @@ arg1 ) +;; definition for function clmf-pos-rot +;; INFO: Used lq/sq (defbehavior clmf-pos-rot cam-layout ((arg0 symbol) (arg1 symbol)) (local-vars (s2-0 structure) (s3-1 vector) (sv-192 matrix)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cam-layout-print 16 *camera-layout-message-ypos* "x/z pos: left stick, down: l1, up: r1") + (cam-layout-print 16 *camera-layout-message-ypos* "x/z pos: left stick, down: l1, up: r1") + (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) + (when (and arg1 (nonzero? arg1)) + (cam-layout-print 16 *camera-layout-message-ypos* "x/y rot: right stick") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) - (when (and arg1 (nonzero? arg1)) - (cam-layout-print 16 *camera-layout-message-ypos* "x/y rot: right stick") - (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) - (cam-layout-print 16 *camera-layout-message-ypos* "z rot: press left stick & move right") - (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) - ) - (let ((s5-0 (new-stack-vector0)) - (s4-0 (new-stack-vector0)) - ) - (set! s3-1 - (cond - ((or (zero? arg0) (not arg0)) - (the-as vector #f) - ) - (else - (if (not (res-lump-struct (-> self cam-entity) arg0 structure)) - (add-data! - (-> self cam-entity) - (the-as - res-tag - (make-u128 - (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int vector) 32) 32)) - (the-as - res-tag - (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg0) 32) 32)) - ) - ) - ) - (the-as pointer (new 'static 'vector4w)) - ) - ) - (set! s3-1 (res-lump-struct (-> self cam-entity) arg0 vector)) - (when (and (not s3-1) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) - (clear *temp-string*) - (format *temp-string* "ERROR : can't add ~A" 'vector) - (cam-layout-print 120 100 *temp-string*) - ) - s3-1 - ) - ) - ) - (set! s2-0 - (cond - ((or (zero? arg1) (not arg1)) - (the-as structure #f) - ) - (else - (if (not (res-lump-struct (-> self cam-entity) arg1 structure)) - (add-data! - (-> self cam-entity) - (the-as - res-tag - (make-u128 - (the-as res-tag (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int quaternion) 32) 32))) - (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg1) 32) 32)) - ) - ) - (the-as pointer (quaternion-identity! (new 'static 'quaternion))) - ) - ) - (set! s2-0 (res-lump-struct (-> self cam-entity) arg1 structure)) - (when (and (not s2-0) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) - (clear *temp-string*) - (format *temp-string* "ERROR : can't add ~A" 'quaternion) - (cam-layout-print 120 100 *temp-string*) - ) - s2-0 - ) - ) - ) - (let ((s1-1 (new 'stack-no-clear 'matrix))) - (set! sv-192 (new 'stack-no-clear 'matrix)) - (let ((s0-1 (new 'stack-no-clear 'vector))) - (if (not s3-1) - (return #f) - ) - (clmf-input s5-0 s4-0 0) - (let ((v1-37 s3-1)) - (let ((f0-0 409.6)) - (.lvf vf2 (&-> s4-0 quad)) - (.lvf vf1 (&-> s3-1 quad)) - (let ((a0-34 f0-0)) - (.mov vf3 a0-34) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-37 quad) vf4) - ) + (cam-layout-print 16 *camera-layout-message-ypos* "z rot: press left stick & move right") + (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) + ) + (let ((s5-0 (new-stack-vector0)) + (s4-0 (new-stack-vector0)) + ) + (set! s3-1 (cond - ((not arg1) - (the-as quaternion #f) - ) - ((zero? arg1) - (the-as quaternion #f) + ((or (zero? arg0) (not arg0)) + (the-as vector #f) ) (else - (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) sv-192) - (vector-float*! s5-0 s5-0 100.0) - (matrix-rotate-x! s1-1 (- (-> s5-0 x))) - (matrix*! sv-192 s1-1 sv-192) - (matrix-rotate-y! s1-1 (-> s5-0 y)) - (matrix*! sv-192 sv-192 s1-1) - (matrix-rotate-z! s1-1 (- (-> s5-0 z))) - (matrix*! sv-192 s1-1 sv-192) - (matrix->quaternion (the-as quaternion s0-1) sv-192) - (quaternion-inverse! (the-as quaternion s2-0) (the-as quaternion (-> self cam-entity connect))) - (quaternion*! (the-as quaternion s2-0) (the-as quaternion s0-1) (the-as quaternion s2-0)) - (quaternion-normalize! (the-as quaternion s2-0)) + (if (not (res-lump-struct (-> self cam-entity) arg0 structure)) + (add-data! + (-> self cam-entity) + (the-as + res-tag + (make-u128 + (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int vector) 32) 32)) + (the-as + res-tag + (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg0) 32) 32)) + ) + ) + ) + (the-as pointer (new 'static 'vector4w)) + ) + ) + (set! s3-1 (res-lump-struct (-> self cam-entity) arg0 vector)) + (when (and (not s3-1) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) + (clear *temp-string*) + (format *temp-string* "ERROR : can't add ~A" 'vector) + (cam-layout-print 120 100 *temp-string*) + ) + s3-1 ) ) ) + (set! s2-0 + (cond + ((or (zero? arg1) (not arg1)) + (the-as structure #f) + ) + (else + (if (not (res-lump-struct (-> self cam-entity) arg1 structure)) + (add-data! + (-> self cam-entity) + (the-as + res-tag + (make-u128 + (the-as res-tag (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int quaternion) 32) 32))) + (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg1) 32) 32)) + ) + ) + (the-as pointer (quaternion-identity! (new 'static 'quaternion))) + ) + ) + (set! s2-0 (res-lump-struct (-> self cam-entity) arg1 structure)) + (when (and (not s2-0) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) + (clear *temp-string*) + (format *temp-string* "ERROR : can't add ~A" 'quaternion) + (cam-layout-print 120 100 *temp-string*) + ) + s2-0 + ) + ) + ) + (let ((s1-1 (new 'stack-no-clear 'matrix))) + (set! sv-192 (new 'stack-no-clear 'matrix)) + (let ((s0-1 (new 'stack-no-clear 'vector))) + (if (not s3-1) + (return #f) + ) + (clmf-input s5-0 s4-0 0) + (vector+float*! s3-1 s3-1 s4-0 409.6) + (cond + ((not arg1) + (the-as quaternion #f) + ) + ((zero? arg1) + (the-as quaternion #f) + ) + (else + (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) sv-192) + (vector-float*! s5-0 s5-0 100.0) + (matrix-rotate-x! s1-1 (- (-> s5-0 x))) + (matrix*! sv-192 s1-1 sv-192) + (matrix-rotate-y! s1-1 (-> s5-0 y)) + (matrix*! sv-192 sv-192 s1-1) + (matrix-rotate-z! s1-1 (- (-> s5-0 z))) + (matrix*! sv-192 s1-1 sv-192) + (matrix->quaternion (the-as quaternion s0-1) sv-192) + (quaternion-inverse! (the-as quaternion s2-0) (the-as quaternion (-> self cam-entity connect))) + (quaternion*! (the-as quaternion s2-0) (the-as quaternion s0-1) (the-as quaternion s2-0)) + (quaternion-normalize! (the-as quaternion s2-0)) + ) + ) ) ) - (set-setting! 'master-options 'set 0 32) - #t ) + (set-setting! 'master-options 'set 0 32) + #t ) +;; definition for function clmf-next-volume (defbehavior clmf-next-volume cam-layout ((arg0 int)) (if (zero? (-> self num-volumes)) (return #f) @@ -1228,6 +1173,7 @@ #t ) +;; definition for function clmf-next-vol-dpad (defun clmf-next-vol-dpad () (local-vars (a0-1 int)) (cam-layout-print 16 *camera-layout-message-ypos* "dpad selects volume") @@ -1254,14 +1200,17 @@ #t ) +;; definition for function clmf-to-edit-cam (defun clmf-to-edit-cam () (clmf-next-volume 0) (set! *clm* *clm-edit*) #t ) +;; definition for symbol *last-cur-entity*, type int (define *last-cur-entity* -1) +;; definition for function clmf-next-entity (defbehavior clmf-next-entity cam-layout ((arg0 int)) (let ((v1-0 (/ arg0 8))) (when (zero? (-> self num-entities)) @@ -1316,38 +1265,46 @@ #t ) +;; definition for function clmf-to-spline-attr (defun clmf-to-spline-attr () (set! *clm* *clm-spline-attr*) #t ) +;; definition for function clmf-to-intro-attr (defun clmf-to-intro-attr () (set! *clm* *clm-intro-attr*) #t ) +;; definition for function clmf-to-index-attr (defun clmf-to-index-attr () (set! *clm* *clm-index-attr*) #t ) +;; definition for function clmf-to-focalpull-attr (defun clmf-to-focalpull-attr () (set! *clm* *clm-focalpull-attr*) #t ) +;; definition for function clmf-to-edit (defbehavior clmf-to-edit cam-layout () (set! (-> self res-key) -1000000000.0) (set! *clm* *clm-edit*) #t ) +;; definition for function clmf-to-select (defun clmf-to-select () (set! *camera-layout-blink* #f) (set! *clm* *clm-select*) #t ) +;; definition for function clmf-look-through +;; INFO: Used lq/sq (defbehavior clmf-look-through cam-layout () (set! (-> *camera-other-fov* data) (cam-slave-get-fov (-> self cam-entity))) (cam-slave-get-vector-with-offset (the-as entity-actor (-> self cam-entity)) *camera-other-trans* 'trans) @@ -1358,6 +1315,7 @@ #f ) +;; definition for function fov->maya (defun fov->maya ((arg0 float)) (if (= arg0 0.0) 0.0 @@ -1365,6 +1323,7 @@ ) ) +;; definition for function cam-layout-save-cam-rot ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-cam-rot ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s3-0 (-> arg2 quat)) @@ -1390,6 +1349,8 @@ (none) ) +;; definition for function cam-layout-save-cam-trans +;; INFO: Used lq/sq ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-cam-trans ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s1-0 (-> arg2 trans)) @@ -1460,6 +1421,8 @@ (none) ) +;; definition for function cam-layout-save-pivot +;; INFO: Used lq/sq ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-pivot ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s2-0 (res-lump-struct arg2 'pivot vector)) @@ -1506,6 +1469,8 @@ (none) ) +;; definition for function cam-layout-save-align +;; INFO: Used lq/sq ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-align ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s2-0 (res-lump-struct arg2 'align vector)) @@ -1552,6 +1517,8 @@ (none) ) +;; definition for function cam-layout-save-interesting +;; INFO: Used lq/sq ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-interesting ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s2-0 (res-lump-struct arg2 'interesting vector)) @@ -1598,6 +1565,7 @@ (none) ) +;; definition for function cam-layout-save-fov ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-fov ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f28-0 (res-lump-float arg2 'fov)) @@ -1638,6 +1606,7 @@ (none) ) +;; definition for function cam-layout-save-focalpull ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-focalpull ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'focalPull)) @@ -1670,6 +1639,7 @@ (none) ) +;; definition for function cam-layout-save-flags ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-flags ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s4-0 (res-lump-value arg2 'flags uint128 :time -1000000000.0)) @@ -1725,6 +1695,7 @@ (none) ) +;; definition for function cam-layout-save-focalpull-flags ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-focalpull-flags ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s4-0 (res-lump-value arg2 'focalpull-flags uint128 :time -1000000000.0)) @@ -1780,6 +1751,7 @@ (none) ) +;; definition for function cam-layout-save-campoints-flags ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-campoints-flags ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s4-0 (res-lump-value arg2 'campoints-flags uint128 :time -1000000000.0)) @@ -1835,6 +1807,7 @@ (none) ) +;; definition for function cam-layout-save-introsplinetime ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-introsplinetime ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f28-0 (res-lump-float arg2 'intro-time)) @@ -1875,6 +1848,7 @@ (none) ) +;; definition for function cam-layout-save-introsplineexitval ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-introsplineexitval ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'intro-exitValue)) @@ -1910,6 +1884,7 @@ (none) ) +;; definition for function cam-layout-save-interptime ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-interptime ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'interpTime)) @@ -1942,6 +1917,7 @@ (none) ) +;; definition for function cam-layout-save-splineoffset ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-splineoffset ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (when (and (not (res-lump-struct arg2 'pivot structure)) (res-lump-struct arg2 'spline-offset structure)) @@ -1963,6 +1939,7 @@ (none) ) +;; definition for function cam-layout-save-spline-follow-dist-offset ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-spline-follow-dist-offset ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'spline-follow-dist-offset))) @@ -1976,6 +1953,7 @@ (none) ) +;; definition for function cam-layout-save-campointsoffset ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-campointsoffset ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((s5-0 (res-lump-struct arg2 'campoints-offset vector))) @@ -1995,6 +1973,7 @@ (none) ) +;; definition for function cam-layout-save-tiltAdjust ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-tiltAdjust ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'tiltAdjust)) @@ -2027,6 +2006,7 @@ (none) ) +;; definition for function cam-layout-save-stringMinLength ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-stringMinLength ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'stringMinLength)) @@ -2059,6 +2039,7 @@ (none) ) +;; definition for function cam-layout-save-stringMaxLength ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-stringMaxLength ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'stringMaxLength)) @@ -2091,6 +2072,7 @@ (none) ) +;; definition for function cam-layout-save-stringMinHeight ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-stringMinHeight ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'stringMinHeight)) @@ -2123,6 +2105,7 @@ (none) ) +;; definition for function cam-layout-save-stringMaxHeight ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-stringMaxHeight ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'stringMaxHeight)) @@ -2155,6 +2138,7 @@ (none) ) +;; definition for function cam-layout-save-stringCliffHeight ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-stringCliffHeight ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'stringCliffHeight)) @@ -2187,6 +2171,7 @@ (none) ) +;; definition for function cam-layout-save-maxAngle ;; WARN: Return type mismatch object vs none. (defun cam-layout-save-maxAngle ((arg0 symbol) (arg1 string) (arg2 entity-actor)) (let ((f30-0 (res-lump-float arg2 'maxAngle)) @@ -2219,6 +2204,7 @@ (none) ) +;; definition for function clmf-save-single (defbehavior clmf-save-single cam-layout ((arg0 entity-camera) (arg1 symbol) (arg2 symbol)) (clear *temp-string*) (if arg2 @@ -2259,6 +2245,7 @@ ) ) +;; definition for function clmf-save-one (defbehavior clmf-save-one cam-layout ((arg0 symbol)) (let ((s5-1 (logtest? (the-as int arg0) 8)) (gp-1 (logtest? (the-as int arg0) 16)) @@ -2277,6 +2264,7 @@ #t ) +;; definition for function clmf-save-all (defbehavior clmf-save-all cam-layout ((arg0 symbol)) (let ((s5-1 (logtest? (the-as int arg0) 8)) (gp-1 (logtest? (the-as int arg0) 16)) @@ -2307,6 +2295,7 @@ #t ) +;; definition of type clmf-cam-flag-toggle-info (deftype clmf-cam-flag-toggle-info (structure) ((key float :offset-assert 0) (force-on int32 :offset-assert 4) @@ -2317,6 +2306,7 @@ :flag-assert #x90000000c ) +;; definition for method 3 of type clmf-cam-flag-toggle-info (defmethod inspect clmf-cam-flag-toggle-info ((obj clmf-cam-flag-toggle-info)) (when (not obj) (set! obj obj) @@ -2330,6 +2320,7 @@ obj ) +;; definition for function clmf-cam-flag-toggle (defbehavior clmf-cam-flag-toggle cam-layout ((arg0 int) (arg1 int)) (let ((s4-0 (/ arg0 8)) (gp-0 (new 'stack 'clmf-cam-flag-toggle-info)) @@ -2453,6 +2444,7 @@ #t ) +;; definition for function clmf-cam-flag (defbehavior clmf-cam-flag cam-layout ((arg0 string) (arg1 uint) (arg2 uint)) (let ((s5-0 (/ (the-as int arg1) 8)) (f30-0 (-> self res-key)) @@ -2526,6 +2518,7 @@ #t ) +;; definition for function clmf-cam-float-adjust (defbehavior clmf-cam-float-adjust cam-layout ((arg0 symbol) (arg1 (pointer float))) (cam-layout-print 16 *camera-layout-message-ypos* "left stick adjusts value") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) @@ -2553,6 +2546,7 @@ #t ) +;; definition for function clmf-cam-meters (defbehavior clmf-cam-meters cam-layout ((arg0 meters) (arg1 symbol)) (let ((f0-0 (cam-slave-get-float (-> self cam-entity) arg1 0.0))) (format arg0 ": ~M" f0-0) @@ -2560,16 +2554,19 @@ #t ) +;; definition for function clmf-cam-fov (defbehavior clmf-cam-fov cam-layout ((arg0 degrees) (arg1 symbol)) (format arg0 ": ~R" (cam-slave-get-fov (-> self cam-entity))) #t ) +;; definition for function clmf-cam-deg (defbehavior clmf-cam-deg cam-layout ((arg0 degrees) (arg1 symbol)) (format arg0 ": ~R" (cam-slave-get-float (-> self cam-entity) arg1 0.0)) #t ) +;; definition for function clmf-cam-intro-time (defbehavior clmf-cam-intro-time cam-layout ((arg0 float) (arg1 symbol)) (let ((f30-0 (cam-slave-get-intro-step (-> self cam-entity)))) (format arg0 ": ~f" (/ 0.016666668 f30-0)) @@ -2578,16 +2575,20 @@ #t ) +;; definition for function clmf-cam-interp-time (defbehavior clmf-cam-interp-time cam-layout ((arg0 float) (arg1 symbol)) (format arg0 ": ~f" (cam-slave-get-interp-time (-> self cam-entity))) #t ) +;; definition for function clmf-cam-float (defbehavior clmf-cam-float cam-layout ((arg0 float) (arg1 symbol)) (format arg0 ": ~f" (cam-slave-get-float (-> self cam-entity) arg1 0.0)) #t ) +;; definition for function clmf-cam-string +;; INFO: Used lq/sq (defbehavior clmf-cam-string cam-layout ((arg0 string) (arg1 symbol)) (local-vars (r0-0 uint128) (v1-5 uint128) (sv-16 int)) (format arg0 ":") @@ -2610,6 +2611,7 @@ #t ) +;; definition for symbol *clm-focalpull-attr*, type clm (define *clm-focalpull-attr* (new 'static 'clm :title "---focalpull attributes--" @@ -2664,6 +2666,7 @@ ) ) +;; definition for symbol *clm-index-attr*, type clm (define *clm-index-attr* (new 'static 'clm :title "---index attributes--" @@ -2718,6 +2721,7 @@ ) ) +;; definition for symbol *clm-intro-attr*, type clm (define *clm-intro-attr* (new 'static 'clm :title "---intro attributes--" @@ -2768,6 +2772,7 @@ ) ) +;; definition for symbol *clm-spline-attr*, type clm (define *clm-spline-attr* (new 'static 'clm :title "---spline attributes--" @@ -2804,6 +2809,7 @@ ) ) +;; definition for symbol *clm-cam-attr*, type clm (define *clm-cam-attr* (new 'static 'clm :title "---camera attributes--" @@ -3105,6 +3111,7 @@ ) ) +;; definition for symbol *clm-cam-lookthrough*, type clm (define *clm-cam-lookthrough* (new 'static 'clm :title "---cam-lookthrough---" @@ -3157,6 +3164,7 @@ ) ) +;; definition for symbol *clm-edit*, type clm (define *clm-edit* (new 'static 'clm :title "---edit---" @@ -3288,6 +3296,7 @@ ) ) +;; definition for symbol *clm-save-all*, type clm (define *clm-save-all* (new 'static 'clm :title "---save all?---" @@ -3311,6 +3320,7 @@ ) ) +;; definition for symbol *clm-save-one*, type clm (define *clm-save-one* (new 'static 'clm :title "---single save?---" @@ -3334,6 +3344,7 @@ ) ) +;; definition for symbol *clm-select*, type clm (define *clm-select* (new 'static 'clm :title "---camera---" @@ -3377,8 +3388,10 @@ ) ) +;; definition for symbol *clm*, type clm (define *clm* *clm-select*) +;; definition for function cam-layout-do-action (defbehavior cam-layout-do-action cam-layout ((arg0 clm-item-action)) (let ((s5-0 (-> arg0 func value))) (cond @@ -3423,6 +3436,7 @@ ) ) +;; definition for function cam-layout-function-call (defbehavior cam-layout-function-call cam-layout ((arg0 symbol) (arg1 string) (arg2 int) (arg3 basic)) (let ((gp-0 (-> arg0 value))) (cond @@ -3438,6 +3452,7 @@ #f ) +;; definition for function cam-layout-do-menu (defbehavior cam-layout-do-menu cam-layout ((arg0 clm)) (set! *camera-layout-message-ypos* 30) (+! (-> *CAM_LAYOUT-bank* spline-t) (-> *CAM_LAYOUT-bank* spline-step)) @@ -3583,6 +3598,7 @@ #f ) +;; failed to figure out what this is: (defstate cam-layout-active (cam-layout) :code (behavior () (until #f @@ -3595,6 +3611,7 @@ ) ) +;; definition for function cam-layout-init (defbehavior cam-layout-init cam-layout () (set! (-> self res-key) -1000000000.0) (set! (-> self num-entities) 0) @@ -3616,11 +3633,13 @@ (go cam-layout-active) ) +;; definition for function cam-layout-stop (defun cam-layout-stop () (set! *cam-layout* #f) (kill-by-name "cam-layout" *active-pool*) ) +;; definition for function cam-layout-start (defun cam-layout-start () (let ((a0-1 (new 'global 'file-stream "dd_next/caminfo/garbage" 'read))) (file-stream-close a0-1) @@ -3647,12 +3666,10 @@ *cam-layout* ) +;; definition for function cam-layout-restart (defun cam-layout-restart () (cam-layout-stop) (cam-layout-start) ) ) - - - diff --git a/goal_src/jak2/engine/camera/cam-states-dbg.gc b/goal_src/jak2/engine/camera/cam-states-dbg.gc index 31c16049a0..efff37449d 100644 --- a/goal_src/jak2/engine/camera/cam-states-dbg.gc +++ b/goal_src/jak2/engine/camera/cam-states-dbg.gc @@ -163,240 +163,237 @@ (defun cam-free-floating-input ((arg0 vector) (arg1 vector) (arg2 symbol) (arg3 int)) (with-pp - (the-as - vector - (when *camera* - (if (-> *setting-control* cam-current mouse-input) - (cam-mouse-input arg0 arg1) - ) - (let ((s3-0 (and (-> *setting-control* cam-current cpad1-skip-buttons) (= arg3 1)))) - (when (not s3-0) - (when (and (!= *master-mode* 'menu) (not *cam-layout*)) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 x) - (set! (-> arg0 x) - (- (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 6)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 triangle) - (+! (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 4)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 square) - (+! (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 7)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 circle) - (set! (-> arg0 y) - (- (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 5)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - ) - (when arg2 - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 l2) - (+! (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 10)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 r2) - (set! (-> arg0 z) - (- (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 11)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - ) - (when (nonzero? arg3) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 left) - (+! (-> arg1 x) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 1)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 right) - (set! (-> arg1 x) - (- (-> arg1 x) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 0)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 up) - (+! (-> arg1 z) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 2)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 down) - (set! (-> arg1 z) - (- (-> arg1 z) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 3)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - ) - ) - (cond - ((logtest? (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG)) - ) - ((cpad-hold? arg3 r2) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 r1) - (+! (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 9)) + (when *camera* + (if (-> *setting-control* cam-current mouse-input) + (cam-mouse-input arg0 arg1) + ) + (let ((s3-0 (and (-> *setting-control* cam-current cpad1-skip-buttons) (= arg3 1)))) + (when (not s3-0) + (when (and (!= *master-mode* 'menu) (not *cam-layout*)) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 x) + (set! (-> arg0 x) + (- (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 6)) 0.0 32.0 230.0 - (* 0.2 (-> *CAM_FREE-bank* speed)) + (-> *CAM_FREE-bank* rot-speed) ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 l1) - (set! (-> arg1 y) - (- (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 8)) - 0.0 - 32.0 - 230.0 - (* 0.2 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - ) - ) - (else - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 r1) - (+! (-> arg1 y) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 9)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) ) ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 l1) - (set! (-> arg1 y) - (- (-> arg1 y) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 8)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 triangle) + (+! (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 4)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 square) + (+! (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 7)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 circle) + (set! (-> arg0 y) + (- (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 5)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) ) ) - (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) - (let ((f28-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 leftx)) 128.0 48.0 110.0 -1.0)) - (f30-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 lefty)) 128.0 48.0 110.0 -1.0)) - (f26-0 (analog-input (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) - (f0-60 (analog-input (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) + (when arg2 + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 l2) + (+! (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 10)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) ) - (cond - ((and (not s3-0) (cpad-hold? arg3 r2)) - (cond - ((cpad-hold? arg3 l2) - (set! (-> arg0 y) (- (-> arg0 y) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) - (set! (-> arg0 x) (- (-> arg0 x) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) - ) - (else - (set! (-> arg0 y) (- (-> arg0 y) (* (- f26-0) (-> *CAM_FREE-bank* rot-speed)))) - (set! (-> arg0 x) (- (-> arg0 x) (* (- f0-60) (-> *CAM_FREE-bank* rot-speed)))) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 r2) + (set! (-> arg0 z) + (- (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 11)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) + ) + ) + (when (nonzero? arg3) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 left) + (+! (-> arg1 x) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 1)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 right) + (set! (-> arg1 x) + (- (-> arg1 x) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 0)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 up) + (+! (-> arg1 z) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 2)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 down) + (set! (-> arg1 z) + (- (-> arg1 z) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 3)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + ) + ) + ) + (cond + ((logtest? (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG)) + ) + ((cpad-hold? arg3 r2) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 r1) + (+! (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 9)) + 0.0 + 32.0 + 230.0 + (* 0.2 (-> *CAM_FREE-bank* speed)) + ) + ) ) - ) - (+! (-> arg1 x) (* 0.2 (-> *CAM_FREE-bank* speed) f28-14)) - (+! (-> arg1 z) (* 0.2 (-> *CAM_FREE-bank* speed) f30-14)) ) - ((and (not s3-0) (cpad-hold? arg3 l2)) - (+! (-> arg1 x) (* f28-14 (-> *CAM_FREE-bank* speed))) - (+! (-> arg1 y) (* f0-60 (-> *CAM_FREE-bank* speed))) - (+! (-> arg1 z) (* f30-14 (-> *CAM_FREE-bank* speed))) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 l1) + (set! (-> arg1 y) + (- (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 8)) + 0.0 + 32.0 + 230.0 + (* 0.2 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) ) - (else - (set! (-> arg0 y) (- (-> arg0 y) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) - (set! (-> arg0 x) (- (-> arg0 x) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) - (+! (-> arg1 x) (* 2.0 (-> *CAM_FREE-bank* speed) f28-14)) - (+! (-> arg1 z) (* 2.0 (-> *CAM_FREE-bank* speed) f30-14)) + ) + ) + (else + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 r1) + (+! (-> arg1 y) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 9)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 l1) + (set! (-> arg1 y) + (- (-> arg1 y) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 8)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + ) + ) + ) + (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) + (let ((f28-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 leftx)) 128.0 48.0 110.0 -1.0)) + (f30-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 lefty)) 128.0 48.0 110.0 -1.0)) + (f26-0 (analog-input (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) + (f0-60 (analog-input (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) + ) + (cond + ((and (not s3-0) (cpad-hold? arg3 r2)) + (cond + ((cpad-hold? arg3 l2) + (set! (-> arg0 y) (- (-> arg0 y) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) + (set! (-> arg0 x) (- (-> arg0 x) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) + ) + (else + (set! (-> arg0 y) (- (-> arg0 y) (* (- f26-0) (-> *CAM_FREE-bank* rot-speed)))) + (set! (-> arg0 x) (- (-> arg0 x) (* (- f0-60) (-> *CAM_FREE-bank* rot-speed)))) + ) + ) + (+! (-> arg1 x) (* 0.2 (-> *CAM_FREE-bank* speed) f28-14)) + (+! (-> arg1 z) (* 0.2 (-> *CAM_FREE-bank* speed) f30-14)) + ) + ((and (not s3-0) (cpad-hold? arg3 l2)) + (+! (-> arg1 x) (* f28-14 (-> *CAM_FREE-bank* speed))) + (+! (-> arg1 y) (* f0-60 (-> *CAM_FREE-bank* speed))) + (+! (-> arg1 z) (* f30-14 (-> *CAM_FREE-bank* speed))) + ) + (else + (set! (-> arg0 y) (- (-> arg0 y) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) + (set! (-> arg0 x) (- (-> arg0 x) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) + (+! (-> arg1 x) (* 2.0 (-> *CAM_FREE-bank* speed) f28-14)) + (+! (-> arg1 z) (* 2.0 (-> *CAM_FREE-bank* speed) f30-14)) ) ) ) ) - (vector-float*! arg0 arg0 (-> pp clock time-adjust-ratio)) - (vector-float*! arg1 arg1 (-> pp clock time-adjust-ratio)) ) + (vector-float*! arg0 arg0 (-> pp clock time-adjust-ratio)) + (vector-float*! arg1 arg1 (-> pp clock time-adjust-ratio)) ) ) ) diff --git a/goal_src/jak2/engine/camera/cam-states.gc b/goal_src/jak2/engine/camera/cam-states.gc index 50e67ea075..3453569053 100644 --- a/goal_src/jak2/engine/camera/cam-states.gc +++ b/goal_src/jak2/engine/camera/cam-states.gc @@ -508,7 +508,7 @@ (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* settings target-height))) ) ) - (vector-! (-> self trans) (-> *camera* tpos-curr) (the-as vector v1-3)) + (vector-! (-> self trans) (-> *camera* tpos-curr) v1-3) ) (set! (-> self blend-from-type) (the-as uint 0)) (set! (-> self blend-to-type) (camera-blend-to-type unknown-0)) @@ -533,148 +533,125 @@ (none) ) :code (behavior () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (-> self clock frame-counter))) - (until #f - (when (not (paused?)) - (let ((s4-0 (vector-reset! (new-stack-vector0))) - (s5-0 (new-stack-matrix0)) - ) - (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) - (let ((f30-0 (analog-input - (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) - 0.0 - 48.0 - 110.0 - -1.0 - ) + (let ((gp-0 (-> self clock frame-counter))) + (until #f + (when (not (paused?)) + (let ((s4-0 (vector-reset! (new-stack-vector0))) + (s5-0 (new-stack-matrix0)) + ) + (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) + (let ((f30-0 (analog-input + (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) + 0.0 + 48.0 + 110.0 + -1.0 ) - (f0-0 (analog-input - (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) - 0.0 - 48.0 - 110.0 - -1.0 - ) - ) - ) - (set! (-> s4-0 y) (- (-> s4-0 y) (* (- f30-0) (-> *CAM_EYE-bank* rot-speed)))) - (set! (-> s4-0 x) (- (-> s4-0 x) (* (- f0-0) (-> *CAM_EYE-bank* rot-speed)))) - ) - ) - (cond - ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 x)) - (set! (-> s4-0 x) (-> *CAM_EYE-bank* rot-speed)) - ) - ((< (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) - (set! (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) - ) - ) - (cond - ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 y)) - (set! (-> s4-0 y) (-> *CAM_EYE-bank* rot-speed)) - ) - ((< (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) - (set! (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) - ) - ) - (cond - ((and (= (-> s4-0 x) 0.0) (= (-> s4-0 y) 0.0)) - (set! gp-0 (-> self clock frame-counter)) - ) - (else - (let ((v1-39 (min 10 (max 1 (- (-> self clock frame-counter) gp-0))))) - (vector-float*! s4-0 s4-0 (* 0.1 (the float v1-39))) - ) - ) - ) - (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) - (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) - (when (zero? (logand (-> self options) 8)) - (if (< (vector-dot (the-as vector (&-> self stack 96)) (-> *camera* local-down)) 0.0) - (forward-down->inv-matrix - (the-as matrix (-> self tracking)) - (the-as vector (&-> self stack 112)) - (-> *camera* local-down) - ) - (forward-down->inv-matrix - (the-as matrix (-> self tracking)) - (the-as vector (&-> self stack 112)) - (vector-negate! (new-stack-vector0) (-> *camera* local-down)) - ) - ) - ) - (matrix-axis-angle! s5-0 (the-as vector (-> self tracking)) (- (-> s4-0 x))) - (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) - ) - (when (zero? (logand (-> self options) 8)) - (let ((f30-1 (vector-dot (-> *camera* local-down) (the-as vector (&-> self stack 112))))) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (when (< (sin (-> *CAM_EYE-bank* max-degrees)) (fabs f30-1)) - (vector--float*! - (the-as vector (&-> self stack 112)) - (the-as vector (&-> self stack 112)) - (-> *camera* local-down) - f30-1 - ) - (vector-normalize! (the-as vector (&-> self stack 112)) (cos (-> *CAM_EYE-bank* max-degrees))) - (cond - ((< f30-1 0.0) - (vector--float*! - (the-as vector (&-> self stack 112)) - (the-as vector (&-> self stack 112)) - (-> *camera* local-down) - (sin (-> *CAM_EYE-bank* max-degrees)) - ) - ) - (else - (let ((s5-3 (&-> self stack 112))) - (let ((s4-3 (&-> self stack 112)) - (s3-2 (-> *camera* local-down)) - (f0-30 (sin (-> *CAM_EYE-bank* max-degrees))) - ) - (.lvf vf2 (&-> s3-2 quad)) - (.lvf vf1 s4-3) - (let ((v1-67 f0-30)) - (.mov vf3 v1-67) + ) + (f0-0 (analog-input + (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) + 0.0 + 48.0 + 110.0 + -1.0 ) ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> s5-3 0)) vf4) - ) - ) ) - (vector-cross! - (the-as vector (&-> self stack 96)) - (the-as vector (&-> self stack 112)) - (the-as vector (-> self tracking)) - ) - (set! (-> self tracking inv-mat vector 1 w) 0.0) + (set! (-> s4-0 y) (- (-> s4-0 y) (* (- f30-0) (-> *CAM_EYE-bank* rot-speed)))) + (set! (-> s4-0 x) (- (-> s4-0 x) (* (- f0-0) (-> *CAM_EYE-bank* rot-speed)))) + ) + ) + (cond + ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 x)) + (set! (-> s4-0 x) (-> *CAM_EYE-bank* rot-speed)) + ) + ((< (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) + (set! (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) + ) + ) + (cond + ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 y)) + (set! (-> s4-0 y) (-> *CAM_EYE-bank* rot-speed)) + ) + ((< (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) + (set! (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) + ) + ) + (cond + ((and (= (-> s4-0 x) 0.0) (= (-> s4-0 y) 0.0)) + (set! gp-0 (-> self clock frame-counter)) + ) + (else + (let ((v1-39 (min 10 (max 1 (- (-> self clock frame-counter) gp-0))))) + (vector-float*! s4-0 s4-0 (* 0.1 (the float v1-39))) ) ) ) - ) - (let ((v1-71 - (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* settings target-height))) + (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) + (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) + (when (zero? (logand (-> self options) 8)) + (if (< (vector-dot (the-as vector (&-> self stack 96)) (-> *camera* local-down)) 0.0) + (forward-down->inv-matrix + (the-as matrix (-> self tracking)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + ) + (forward-down->inv-matrix + (the-as matrix (-> self tracking)) + (the-as vector (&-> self stack 112)) + (vector-negate! (new-stack-vector0) (-> *camera* local-down)) + ) ) - ) - (vector-! (-> self trans) (-> *camera* tpos-curr) (the-as vector v1-71)) + ) + (matrix-axis-angle! s5-0 (the-as vector (-> self tracking)) (- (-> s4-0 x))) + (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) + ) + (when (zero? (logand (-> self options) 8)) + (let ((f30-1 (vector-dot (-> *camera* local-down) (the-as vector (&-> self stack 112))))) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (when (< (sin (-> *CAM_EYE-bank* max-degrees)) (fabs f30-1)) + (vector--float*! + (the-as vector (&-> self stack 112)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + f30-1 + ) + (vector-normalize! (the-as vector (&-> self stack 112)) (cos (-> *CAM_EYE-bank* max-degrees))) + (if (< f30-1 0.0) + (vector--float*! + (the-as vector (&-> self stack 112)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + (sin (-> *CAM_EYE-bank* max-degrees)) + ) + (vector+float*! + (the-as vector (&-> self stack 112)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + (sin (-> *CAM_EYE-bank* max-degrees)) + ) + ) + (vector-cross! + (the-as vector (&-> self stack 96)) + (the-as vector (&-> self stack 112)) + (the-as vector (-> self tracking)) + ) + (set! (-> self tracking inv-mat vector 1 w) 0.0) + ) + ) ) - (suspend) ) + (let ((v1-70 + (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* settings target-height))) + ) + ) + (vector-! (-> self trans) (-> *camera* tpos-curr) v1-70) + ) + (suspend) ) - #f - (none) ) + #f + (none) ) ) @@ -1599,170 +1576,135 @@ ) (defbehavior cam-string-move camera-slave () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (vector-! (-> self velocity) (-> self desired-pos) (-> self string-trans)) - (if *display-cam-los-debug* - (format *stdcon* "vel ~M~%" (vector-length (-> self velocity))) + (vector-! (-> self velocity) (-> self desired-pos) (-> self string-trans)) + (if *display-cam-los-debug* + (format *stdcon* "vel ~M~%" (vector-length (-> self velocity))) + ) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'vector)) ) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) + (vector-! s3-0 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) + (vector+float*! s5-0 (-> self velocity) s3-0 0.5) + (vector-normalize! s5-0 1.0) + (vector-normalize-copy! s4-0 (-> self view-flat) 1.0) + (vector-cross! gp-0 s4-0 s5-0) + (cond + ((and (< (vector-length (-> self velocity)) (-> *CAMERA-bank* min-detectable-velocity)) + (< (vector-length s3-0) (-> *CAMERA-bank* min-detectable-velocity)) + ) + (set! (-> self string-vel-dir) (the-as uint 0)) + 0 + ) + ((< (cos 5461.3335) (vector-dot (-> *camera* local-down) s5-0)) + (set! (-> self string-vel-dir) (the-as uint 4)) + ) + ((< (vector-dot (-> *camera* local-down) s5-0) (- (cos 5461.3335))) + (set! (-> self string-vel-dir) (the-as uint 3)) + ) + ((< (cos 5461.3335) (vector-dot s4-0 s5-0)) + (set! (-> self string-vel-dir) (the-as uint 6)) + ) + ((< (vector-dot s4-0 s5-0) (- (cos 5461.3335))) + (set! (-> self string-vel-dir) (the-as uint 5)) + ) + ((< (vector-dot (-> *camera* local-down) gp-0) 0.0) + (set! (-> self string-vel-dir) (the-as uint 1)) + ) + (else + (set! (-> self string-vel-dir) (the-as uint 2)) + ) + ) + ) + (let ((s5-1 (new 'stack-no-clear 'collide-query))) + 0.0 + (let ((f30-2 1.0) + (s4-1 (-> s5-1 move-dist)) + (gp-1 0) ) - (vector-! s3-0 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) - (let ((v1-7 s5-0)) - (let ((a0-4 (-> self velocity)) - (a1-5 s3-0) - (f0-0 0.5) + (let ((s3-1 (new 'stack-no-clear 'vector))) + (when *debug-segment* + (if (>= (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) + (cam-collision-record-save (-> self string-trans) (-> self velocity) -1 'no-hit self) + ) + ) + (while (and (< 0.01 f30-2) + (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (< gp-1 4)) + ) + (vector-float*! s4-1 (-> self velocity) f30-2) + (if *debug-segment* + (cam-collision-record-save (-> self string-trans) s4-1 gp-1 'normal self) + ) + (let ((f28-0 + (cond + ((logtest? (-> self options) 32) + (set! (-> s5-1 start-pos quad) (-> self string-trans quad)) + (let ((s2-0 s5-1)) + (set! (-> s2-0 radius) (-> *CAMERA-bank* collide-move-rad)) + (set! (-> s2-0 collide-with) (collide-spec backgnd obstacle hit-by-others-list camera-blocker pusher)) + (set! (-> s2-0 ignore-process0) #f) + (set! (-> s2-0 ignore-process1) #f) + (set! (-> s2-0 ignore-pat) (the-as pat-surface (camera-master-method-16 *camera* #f))) + (set! (-> s2-0 action-mask) (collide-action solid)) + ) + (fill-and-probe-using-line-sphere *collide-cache* s5-1) + ) + (else + -100000000.0 + ) + ) + ) + ) + (if *display-cam-los-debug* + (format *stdcon* "vp ~f vr ~f r ~f ta ~f~%" (vector-length s4-1) f30-2 (/ (vector-length s4-1) f30-2) f28-0) + ) + (cond + ((>= f28-0 0.0) + (let* ((f1-10 (fmax 0.01 (/ 40.96 (vector-length s4-1)))) + (f0-22 (fmax 0.0 (- f28-0 f1-10))) + ) + (vector+float*! (-> self string-trans) (-> self string-trans) s4-1 f0-22) + ) + (vector-! s3-1 (-> self string-trans) (-> s5-1 best-other-tri intersect)) + (vector-normalize! s3-1 1.0) + (vector-flatten! (-> self velocity) (-> self velocity) s3-1) + (set! f30-2 (- f30-2 (* f30-2 f28-0))) + (+! gp-1 1) + ) + (else + (vector+! (-> self string-trans) (-> self string-trans) s4-1) + (set! f30-2 0.0) + ) ) - (.lvf vf2 (&-> a1-5 quad)) - (.lvf vf1 (&-> a0-4 quad)) - (let ((a0-5 f0-0)) - (.mov vf3 a0-5) ) ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-7 quad) vf4) ) - (vector-normalize! s5-0 1.0) - (vector-normalize-copy! s4-0 (-> self view-flat) 1.0) - (vector-cross! gp-0 s4-0 s5-0) (cond - ((and (< (vector-length (-> self velocity)) (-> *CAMERA-bank* min-detectable-velocity)) - (< (vector-length s3-0) (-> *CAMERA-bank* min-detectable-velocity)) - ) - (set! (-> self string-vel-dir) (the-as uint 0)) - 0 - ) - ((< (cos 5461.3335) (vector-dot (-> *camera* local-down) s5-0)) - (set! (-> self string-vel-dir) (the-as uint 4)) - ) - ((< (vector-dot (-> *camera* local-down) s5-0) (- (cos 5461.3335))) - (set! (-> self string-vel-dir) (the-as uint 3)) - ) - ((< (cos 5461.3335) (vector-dot s4-0 s5-0)) - (set! (-> self string-vel-dir) (the-as uint 6)) - ) - ((< (vector-dot s4-0 s5-0) (- (cos 5461.3335))) - (set! (-> self string-vel-dir) (the-as uint 5)) - ) - ((< (vector-dot (-> *camera* local-down) gp-0) 0.0) - (set! (-> self string-vel-dir) (the-as uint 1)) + ((zero? gp-1) + (set! (-> self options) (logand -1025 (-> self options))) + (if *display-cam-los-debug* + (format *stdcon* "not blocked~%") + ) ) (else - (set! (-> self string-vel-dir) (the-as uint 2)) - ) - ) - ) - (let ((s5-1 (new 'stack-no-clear 'collide-query))) - 0.0 - (let ((f30-2 1.0) - (s4-1 (-> s5-1 move-dist)) - (gp-1 0) - ) - (let ((s3-1 (new 'stack-no-clear 'vector))) - (when *debug-segment* - (if (>= (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) - (cam-collision-record-save (-> self string-trans) (-> self velocity) -1 'no-hit self) + (logior! (-> self options) 1024) + (if *display-cam-los-debug* + (format *stdcon* "blocked ~D ~f~%" gp-1 f30-2) + ) + (let ((gp-2 (new-stack-vector0)) + (f30-3 (vector-length (-> self view-flat))) ) - ) - (while (and (< 0.01 f30-2) - (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (< gp-1 4)) - ) - (vector-float*! s4-1 (-> self velocity) f30-2) - (if *debug-segment* - (cam-collision-record-save (-> self string-trans) s4-1 gp-1 'normal self) - ) - (let ((f28-0 - (cond - ((logtest? (-> self options) 32) - (set! (-> s5-1 start-pos quad) (-> self string-trans quad)) - (let ((s2-0 s5-1)) - (set! (-> s2-0 radius) (-> *CAMERA-bank* collide-move-rad)) - (set! (-> s2-0 collide-with) (collide-spec backgnd obstacle hit-by-others-list camera-blocker pusher)) - (set! (-> s2-0 ignore-process0) #f) - (set! (-> s2-0 ignore-process1) #f) - (set! (-> s2-0 ignore-pat) (the-as pat-surface (camera-master-method-16 *camera* #f))) - (set! (-> s2-0 action-mask) (collide-action solid)) - ) - (fill-and-probe-using-line-sphere *collide-cache* s5-1) - ) - (else - -100000000.0 - ) - ) - ) - ) - (if *display-cam-los-debug* - (format *stdcon* "vp ~f vr ~f r ~f ta ~f~%" (vector-length s4-1) f30-2 (/ (vector-length s4-1) f30-2) f28-0) - ) + (vector-! gp-2 (-> self string-trans) (-> *camera* tpos-curr-adj)) + (vector-flatten! gp-2 gp-2 (-> *camera* local-down)) + (let ((f28-1 (vector-length gp-2))) (cond - ((>= f28-0 0.0) - (let* ((f1-10 (fmax 0.01 (/ 40.96 (vector-length s4-1)))) - (f0-22 (fmax 0.0 (- f28-0 f1-10))) - (v1-71 (-> self string-trans)) - ) - (let ((a0-24 (-> self string-trans))) - (.lvf vf2 (&-> s4-1 quad)) - (.lvf vf1 (&-> a0-24 quad)) - ) - (let ((a0-25 f0-22)) - (.mov vf3 a0-25) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-71 quad) vf4) - ) - (vector-! s3-1 (-> self string-trans) (-> s5-1 best-other-tri intersect)) - (vector-normalize! s3-1 1.0) - (vector-flatten! (-> self velocity) (-> self velocity) s3-1) - (set! f30-2 (- f30-2 (* f30-2 f28-0))) - (+! gp-1 1) + ((< f28-1 f30-3) + (vector-normalize-copy! (-> self view-flat) gp-2 f28-1) + (set! (-> self min-z-override) f28-1) ) (else - (vector+! (-> self string-trans) (-> self string-trans) s4-1) - (set! f30-2 0.0) - ) - ) - ) - ) - ) - (cond - ((zero? gp-1) - (set! (-> self options) (logand -1025 (-> self options))) - (if *display-cam-los-debug* - (format *stdcon* "not blocked~%") - ) - ) - (else - (logior! (-> self options) 1024) - (if *display-cam-los-debug* - (format *stdcon* "blocked ~D ~f~%" gp-1 f30-2) - ) - (let ((gp-2 (new-stack-vector0)) - (f30-3 (vector-length (-> self view-flat))) - ) - (vector-! gp-2 (-> self string-trans) (-> *camera* tpos-curr-adj)) - (vector-flatten! gp-2 gp-2 (-> *camera* local-down)) - (let ((f28-1 (vector-length gp-2))) - (cond - ((< f28-1 f30-3) - (vector-normalize-copy! (-> self view-flat) gp-2 f28-1) - (set! (-> self min-z-override) f28-1) - ) - (else - (vector-normalize-copy! (-> self view-flat) gp-2 f30-3) - ) + (vector-normalize-copy! (-> self view-flat) gp-2 f30-3) ) ) ) @@ -1770,11 +1712,11 @@ ) ) ) - (when *display-cam-los-debug* - (let ((v1-103 (new-stack-vector0))) - (vector-! v1-103 (-> self desired-pos) (-> self string-trans)) - (format *stdcon* "vel ~M~%" (vector-length v1-103)) - ) + ) + (when *display-cam-los-debug* + (let ((v1-105 (new-stack-vector0))) + (vector-! v1-105 (-> self desired-pos) (-> self string-trans)) + (format *stdcon* "vel ~M~%" (vector-length v1-105)) ) ) ) diff --git a/goal_src/jak2/engine/camera/camera.gc b/goal_src/jak2/engine/camera/camera.gc index 129d443df3..1e8619856c 100644 --- a/goal_src/jak2/engine/camera/camera.gc +++ b/goal_src/jak2/engine/camera/camera.gc @@ -1151,186 +1151,171 @@ (defun cam-calc-follow! ((arg0 cam-rotation-tracker) (arg1 vector) (arg2 symbol)) (local-vars (sv-128 (function float float float float)) (sv-144 float) (sv-160 float)) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cond - (arg2 - (update! (-> arg0 tilt-adjust) 0.0) - (update! (-> arg0 point-of-interest-blend) 0.0) - (update! (-> arg0 underwater-blend) 0.0) - ) - (else - (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) - (jump-to-target! (-> arg0 tilt-adjust) 0.0) - (jump-to-target! (-> arg0 point-of-interest-blend) 0.0) - (jump-to-target! (-> arg0 underwater-blend) 0.0) - ) + (cond + (arg2 + (update! (-> arg0 tilt-adjust) 0.0) + (update! (-> arg0 point-of-interest-blend) 0.0) + (update! (-> arg0 underwater-blend) 0.0) ) - (set! (-> arg0 follow-height-extra target) (-> *camera* settings extra-follow-height)) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> s4-0 quad) (-> arg0 follow-pt quad)) - (cond - ((logtest? (-> *camera* settings slave-options) (cam-slave-options BIKE_MODE)) - (let ((s1-0 (new 'stack-no-clear 'vector)) - (s0-0 (new 'stack-no-clear 'vector)) - (f30-0 (vector-vector-distance (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj))) - (s2-0 (new 'stack-no-clear 'vector)) - ) - (vector-flatten! s1-0 (the-as vector (&-> *camera* stack 320)) (-> *camera* local-down)) - (vector-normalize! s1-0 1.0) - (vector-! s0-0 (-> *camera* tpos-curr-adj) arg1) - (vector-flatten! s0-0 s0-0 (-> *camera* local-down)) - (vector-normalize! s0-0 1.0) - (vector-float*! s2-0 (the-as vector (&-> *camera* stack 320)) 32768.0) - (set! sv-128 lerp-clamp) - (set! sv-144 (the-as float 0.7)) - (set! sv-160 (the-as float 0.4)) - (let* ((a2-3 (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0)))) - (f30-1 (sv-128 sv-144 sv-160 a2-3)) - (f0-7 (acos (vector-dot s0-0 s1-0))) - (f28-0 (fmax 1820.4445 f0-7)) - ) - (if (< f28-0 8192.0) - (vector-float*! - s2-0 - s2-0 - (+ f30-1 - (* (/ (- 1.0 f30-1) (- 1.0 (cos 32768.0))) (+ (- (cos 32768.0)) (cos (* 5.142857 (- 8192.0 f28-0))))) - ) - ) - ) + (else + (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) + (jump-to-target! (-> arg0 tilt-adjust) 0.0) + (jump-to-target! (-> arg0 point-of-interest-blend) 0.0) + (jump-to-target! (-> arg0 underwater-blend) 0.0) + ) + ) + (set! (-> arg0 follow-height-extra target) (-> *camera* settings extra-follow-height)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> arg0 follow-pt quad)) + (cond + ((logtest? (-> *camera* settings slave-options) (cam-slave-options BIKE_MODE)) + (let ((s1-0 (new 'stack-no-clear 'vector)) + (s0-0 (new 'stack-no-clear 'vector)) + (f30-0 (vector-vector-distance (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj))) + (s2-0 (new 'stack-no-clear 'vector)) ) - (cond - ((< (-> *camera* ease-t) 1.0) - ) - ((< (-> arg0 follow-blend) 1.0) - (let* ((f0-21 (-> arg0 follow-blend)) - (f0-22 (* f0-21 f0-21)) - (f0-23 (* f0-22 f0-22)) - ) - (vector-! s2-0 s2-0 (-> arg0 follow-off)) - (vector-float*! s2-0 s2-0 f0-23) + (vector-flatten! s1-0 (the-as vector (&-> *camera* stack 320)) (-> *camera* local-down)) + (vector-normalize! s1-0 1.0) + (vector-! s0-0 (-> *camera* tpos-curr-adj) arg1) + (vector-flatten! s0-0 s0-0 (-> *camera* local-down)) + (vector-normalize! s0-0 1.0) + (vector-float*! s2-0 (the-as vector (&-> *camera* stack 320)) 32768.0) + (set! sv-128 lerp-clamp) + (set! sv-144 (the-as float 0.7)) + (set! sv-160 (the-as float 0.4)) + (let* ((a2-3 (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0)))) + (f30-1 (sv-128 sv-144 sv-160 a2-3)) + (f0-7 (acos (vector-dot s0-0 s1-0))) + (f28-0 (fmax 1820.4445 f0-7)) ) - (+! (-> arg0 follow-blend) (* 0.016666668 (-> pp clock time-adjust-ratio))) - (vector+! (-> arg0 follow-off) (-> arg0 follow-off) s2-0) - ) - (else - (set! (-> arg0 follow-off quad) (-> s2-0 quad)) + (if (< f28-0 8192.0) + (vector-float*! + s2-0 + s2-0 + (+ f30-1 + (* (/ (- 1.0 f30-1) (- 1.0 (cos 32768.0))) (+ (- (cos 32768.0)) (cos (* 5.142857 (- 8192.0 f28-0))))) + ) + ) ) - ) ) (cond - (arg2 - (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) - (set! (-> arg0 follow-height-extra vel) 0.0) - (update! (-> arg0 follow-height-extra) 0.0) - ) - ) + ((< (-> *camera* ease-t) 1.0) + ) + ((< (-> arg0 follow-blend) 1.0) + (let* ((f0-21 (-> arg0 follow-blend)) + (f0-22 (* f0-21 f0-21)) + (f0-23 (* f0-22 f0-22)) + ) + (vector-! s2-0 s2-0 (-> arg0 follow-off)) + (vector-float*! s2-0 s2-0 f0-23) + ) + (+! (-> arg0 follow-blend) (* 0.016666668 (-> pp clock time-adjust-ratio))) + (vector+! (-> arg0 follow-off) (-> arg0 follow-off) s2-0) + ) (else - (jump-to-target! (-> arg0 follow-height-extra) 0.0) + (set! (-> arg0 follow-off quad) (-> s2-0 quad)) ) ) - (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) - (vector--float*! - (-> arg0 follow-pt) - (-> arg0 follow-pt) - (-> *camera* local-down) - (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) - ) ) - (else - 0.0 - (let ((s2-1 (new-stack-vector0))) - (set! (-> arg0 follow-blend) 0.0) - (cond - ((-> arg0 no-follow) - (vector-reset! s2-1) + (cond + (arg2 + (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) + (set! (-> arg0 follow-height-extra vel) 0.0) + (update! (-> arg0 follow-height-extra) 0.0) ) - (else - (vector-! s2-1 (-> *camera* tpos-curr-adj) arg1) - (vector-normalize! s2-1 1.0) - (let* ((f0-32 (vector-dot (the-as vector (&-> *camera* stack 256)) s2-1)) - (f30-2 (cond - ((< f0-32 0.0) - 1.0 - ) - (else - (let* ((f0-33 (* f0-32 f0-32)) (f0-34 (- 1.0 f0-33))) (* f0-34 (* f0-34 f0-34))) + ) + (else + (jump-to-target! (-> arg0 follow-height-extra) 0.0) + ) + ) + (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) + (vector--float*! + (-> arg0 follow-pt) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) + ) + ) + (else + 0.0 + (let ((s2-1 (new-stack-vector0))) + (set! (-> arg0 follow-blend) 0.0) + (cond + ((-> arg0 no-follow) + (vector-reset! s2-1) + ) + (else + (vector-! s2-1 (-> *camera* tpos-curr-adj) arg1) + (vector-normalize! s2-1 1.0) + (let* ((f0-32 (vector-dot (the-as vector (&-> *camera* stack 256)) s2-1)) + (f30-2 (cond + ((< f0-32 0.0) + 1.0 + ) + (else + (let* ((f0-33 (* f0-32 f0-32)) + (f0-34 (- 1.0 f0-33)) + ) + (* f0-34 (* f0-34 f0-34)) ) ) ) + ) + ) + (vector-! s2-1 arg1 (-> *camera* tpos-curr-adj)) + (vector-flatten! s2-1 s2-1 (-> *camera* local-down)) + (let* ((f1-15 (* 0.000022194603 (+ -20480.0 (vector-length s2-1)))) + (f0-37 (fmax 0.0 (fmin 1.0 f1-15))) ) - (vector-! s2-1 arg1 (-> *camera* tpos-curr-adj)) - (vector-flatten! s2-1 s2-1 (-> *camera* local-down)) - (let* ((f1-15 (* 0.000022194603 (+ -20480.0 (vector-length s2-1)))) - (f0-37 (fmax 0.0 (fmin 1.0 f1-15))) - ) - (vector-float*! s2-1 (the-as vector (&-> *camera* stack 256)) (* (lerp 2048.0 8192.0 f0-37) f30-2)) - ) + (vector-float*! s2-1 (the-as vector (&-> *camera* stack 256)) (* (lerp 2048.0 8192.0 f0-37) f30-2)) ) ) ) - (cond - (arg2 - (vector-seek-3d-smooth! (-> arg0 follow-off) s2-1 (* 20480.0 (-> pp clock seconds-per-frame)) 0.05) - (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) - (set! (-> arg0 follow-height-extra vel) 0.0) - (update! (-> arg0 follow-height-extra) 0.0) - ) - ) - (else - (set! (-> arg0 follow-off quad) (-> s2-1 quad)) - (jump-to-target! (-> arg0 follow-height-extra) 0.0) - ) + ) + (cond + (arg2 + (vector-seek-3d-smooth! (-> arg0 follow-off) s2-1 (* 20480.0 (-> pp clock seconds-per-frame)) 0.05) + (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) + (set! (-> arg0 follow-height-extra vel) 0.0) + (update! (-> arg0 follow-height-extra) 0.0) + ) + ) + (else + (set! (-> arg0 follow-off quad) (-> s2-1 quad)) + (jump-to-target! (-> arg0 follow-height-extra) 0.0) ) ) - (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) - (vector--float*! - (-> arg0 follow-pt) - (-> arg0 follow-pt) - (-> *camera* local-down) - (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) - ) ) - ) - (when (and arg2 (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options))) - (let ((f0-46 - (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) arg1 (-> arg0 old-cam-trans))) - ) - (f1-20 - (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) (-> arg0 follow-pt) s4-0)) - ) - ) - (vector--float*! (-> arg0 follow-pt) (-> arg0 follow-pt) (-> *camera* local-down) (- f1-20 f0-46)) + (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) + (vector--float*! + (-> arg0 follow-pt) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) ) - (let ((v1-107 (-> arg0 follow-off))) - (let ((a0-64 (-> arg0 follow-pt)) - (a1-39 (-> *camera* local-down)) - (f0-49 (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height))) - ) - (.lvf vf2 (&-> a1-39 quad)) - (.lvf vf1 (&-> a0-64 quad)) - (let ((a0-65 f0-49)) - (.mov vf3 a0-65) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-107 quad) vf4) - ) - (vector-! (-> arg0 follow-off) (-> arg0 follow-off) (-> *camera* tpos-curr-adj)) ) ) - (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) - (-> arg0 follow-pt) + (when (and arg2 (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options))) + (let ((f0-46 + (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) arg1 (-> arg0 old-cam-trans))) + ) + (f1-20 + (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) (-> arg0 follow-pt) s4-0)) + ) + ) + (vector--float*! (-> arg0 follow-pt) (-> arg0 follow-pt) (-> *camera* local-down) (- f1-20 f0-46)) + ) + (vector+float*! + (-> arg0 follow-off) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) + ) + (vector-! (-> arg0 follow-off) (-> arg0 follow-off) (-> *camera* tpos-curr-adj)) + ) ) + (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) + (-> arg0 follow-pt) ) ) diff --git a/goal_src/jak2/engine/collide/find-nearest.gc b/goal_src/jak2/engine/collide/find-nearest.gc index 43c45ee4c0..182075a310 100644 --- a/goal_src/jak2/engine/collide/find-nearest.gc +++ b/goal_src/jak2/engine/collide/find-nearest.gc @@ -225,187 +225,162 @@ (sv-752 float) ) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 *search-info*)) - (set! (-> gp-0 match) #f) - (set! (-> gp-0 point quad) (-> arg1 quad)) - (set! (-> gp-0 radius) arg2) - (set! (-> gp-0 best) 1000000000000000000000.0) - (set! (-> gp-0 rating) (search-info-flag)) - (set! (-> gp-0 require) arg4) - (set! (-> gp-0 mask) arg3) - (set! (-> gp-0 rot-base quad) (-> arg5 quad)) - (if arg6 - (set! (-> gp-0 ack-point quad) (-> arg6 quad)) - (set! (-> gp-0 ack-point quad) (-> gp-0 rot-base quad)) - ) - (set! arg7 (cond - ((= arg7 65536.0) - -2.0 - ) - (else - (empty) - arg7 - ) + (let ((gp-0 *search-info*)) + (set! (-> gp-0 match) #f) + (set! (-> gp-0 point quad) (-> arg1 quad)) + (set! (-> gp-0 radius) arg2) + (set! (-> gp-0 best) 1000000000000000000000.0) + (set! (-> gp-0 rating) (search-info-flag)) + (set! (-> gp-0 require) arg4) + (set! (-> gp-0 mask) arg3) + (set! (-> gp-0 rot-base quad) (-> arg5 quad)) + (if arg6 + (set! (-> gp-0 ack-point quad) (-> arg6 quad)) + (set! (-> gp-0 ack-point quad) (-> gp-0 rot-base quad)) + ) + (set! arg7 (cond + ((= arg7 65536.0) + -2.0 + ) + (else + (empty) + arg7 ) - ) - (set! (-> gp-0 rot-range) arg7) - (let ((s4-0 (-> arg0 length))) - (while (begin (label cfg-89) (nonzero? s4-0)) - (+! s4-0 -1) - (let* ((s1-0 (-> arg0 s4-0)) - (s2-0 (-> s1-0 process)) - (s3-0 (if (type? s2-0 process-focusable) - s2-0 - ) - ) ) - (when (and (and s3-0 (zero? (logand (-> (the-as process-focusable s3-0) focus-status) (focus-status disable dead)))) - (and (logtest? (process-mask crate enemy collectable guard) (-> s3-0 mask)) - (zero? (logand (process-mask no-track) (-> s3-0 mask))) - ) - ) - (let* ((s2-1 (get-trans (the-as process-focusable s3-0) 3)) - (f30-0 (- (vector-vector-distance (-> gp-0 point) s2-1) (-> s2-1 w))) + ) + (set! (-> gp-0 rot-range) arg7) + (let ((s4-0 (-> arg0 length))) + (while (begin (label cfg-89) (nonzero? s4-0)) + (+! s4-0 -1) + (let* ((s1-0 (-> arg0 s4-0)) + (s2-0 (-> s1-0 process)) + (s3-0 (if (type? s2-0 process-focusable) + s2-0 + ) ) - (when (nonzero? (-> s1-0 root-prim prim-core collide-as)) - (let ((s1-1 0)) - 0.0 - (let* ((s0-0 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) 1.0)) - (f28-0 (cond - ((logtest? (-> gp-0 mask) (search-info-flag prefer-xz)) - (set! sv-704 deg-diff) - (set! sv-720 (vector-y-angle (-> gp-0 rot-base))) - (let ((a1-7 (vector-y-angle s0-0))) - (fabs (sv-704 sv-720 a1-7)) - ) + ) + (when (and (and s3-0 (zero? (logand (-> (the-as process-focusable s3-0) focus-status) (focus-status disable dead)))) + (and (logtest? (process-mask crate enemy collectable guard) (-> s3-0 mask)) + (zero? (logand (process-mask no-track) (-> s3-0 mask))) + ) + ) + (let* ((s2-1 (get-trans (the-as process-focusable s3-0) 3)) + (f30-0 (- (vector-vector-distance (-> gp-0 point) s2-1) (-> s2-1 w))) + ) + (when (nonzero? (-> s1-0 root-prim prim-core collide-as)) + (let ((s1-1 0)) + 0.0 + (let* ((s0-0 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) 1.0)) + (f28-0 (cond + ((logtest? (-> gp-0 mask) (search-info-flag prefer-xz)) + (set! sv-704 deg-diff) + (set! sv-720 (vector-y-angle (-> gp-0 rot-base))) + (let ((a1-7 (vector-y-angle s0-0))) + (fabs (sv-704 sv-720 a1-7)) ) - ((logtest? (-> gp-0 mask) (search-info-flag prefer-angle)) - (- -9999.0 (vector-dot s0-0 (-> gp-0 rot-base))) - ) - ((logtest? (-> gp-0 mask) (search-info-flag prefer-center)) - (* f30-0 (fmax 0.01 (- 1.0 (vector-dot s0-0 (-> gp-0 rot-base))))) - ) - (else - f30-0 - ) + ) + ((logtest? (-> gp-0 mask) (search-info-flag prefer-angle)) + (- -9999.0 (vector-dot s0-0 (-> gp-0 rot-base))) + ) + ((logtest? (-> gp-0 mask) (search-info-flag prefer-center)) + (* f30-0 (fmax 0.01 (- 1.0 (vector-dot s0-0 (-> gp-0 rot-base))))) + ) + (else + f30-0 ) ) - ) - (cond - ((logtest? (-> gp-0 mask) (search-info-flag cull-angle)) - (cond - ((< (-> gp-0 rot-range) 14563.556) - (let ((f26-0 (vector-dot (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) (-> gp-0 rot-base))) - (s0-1 (new 'stack-no-clear 'vector)) - ) - (let ((v1-45 (-> gp-0 point)) - (a0-23 (-> gp-0 rot-base)) - (f0-13 f26-0) - ) - (.lvf vf2 (&-> a0-23 quad)) - (.lvf vf1 (&-> v1-45 quad)) - (let ((v1-46 f0-13)) - (.mov vf3 v1-46) - ) ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s0-1 quad) vf4) - (if (< (* f26-0 (tan (-> gp-0 rot-range))) (- (vector-vector-distance s0-1 s2-1) (-> s2-1 w))) + ) + (cond + ((logtest? (-> gp-0 mask) (search-info-flag cull-angle)) + (cond + ((< (-> gp-0 rot-range) 14563.556) + (let* ((f26-0 (vector-dot (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) (-> gp-0 rot-base))) + (s0-2 (vector+float*! (new 'stack-no-clear 'vector) (-> gp-0 point) (-> gp-0 rot-base) f26-0)) + ) + (if (< (* f26-0 (tan (-> gp-0 rot-range))) (- (vector-vector-distance s0-2 s2-1) (-> s2-1 w))) + (goto cfg-89) + ) + ) + ) + (else + (if (< (vector-dot s0-0 (-> gp-0 rot-base)) (cos (-> gp-0 rot-range))) + (return (the-as basic #f)) + ) + ) + ) + ) + ((logtest? (-> gp-0 mask) (search-info-flag cull-xz)) + (let ((f26-3 (-> gp-0 rot-range))) + (set! sv-736 deg-diff) + (set! sv-752 (vector-y-angle (-> gp-0 rot-base))) + (let ((a1-10 (vector-y-angle s0-0))) + (if (< f26-3 (fabs (sv-736 sv-752 a1-10))) + (goto cfg-89) + ) + ) + ) + ) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag back-point)) + (if (< (vector-dot + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 ack-point)) 1.0) + (-> gp-0 rot-base) + ) + 0.0 + ) + (goto cfg-89) + ) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag combo)) + (if (not (send-event s3-0 'combo)) + (goto cfg-89) + ) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag check-track)) + (if (not (send-event s3-0 'track #f)) + (goto cfg-89) + ) + ) + (if (logtest? (process-mask enemy guard) (-> s3-0 mask)) + (set! s1-1 (logior s1-1 2)) + ) + (if (logtest? (process-mask crate) (-> s3-0 mask)) + (set! s1-1 (logior s1-1 1)) + ) + (if (and (nonzero? (-> s3-0 draw)) (logtest? (-> s3-0 draw status) (draw-control-status on-screen))) + (set! s1-1 (logior s1-1 4)) + ) + (let ((s1-2 (logand (the-as search-info-flag s1-1) (-> gp-0 mask)))) + (when (and (>= s1-2 (the-as int (-> gp-0 rating))) + (or (zero? (-> gp-0 require)) (logtest? (the-as search-info-flag s1-2) (-> gp-0 require))) + (< f28-0 (-> gp-0 best)) + (< f30-0 (-> gp-0 radius)) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag probe)) + (let ((a1-15 (new 'stack-no-clear 'collide-query))) + (set! (-> a1-15 start-pos quad) (-> gp-0 ack-point quad)) + (vector-! (-> a1-15 move-dist) s2-1 (-> gp-0 ack-point)) + (let ((v1-112 a1-15)) + (set! (-> v1-112 radius) 1228.8) + (set! (-> v1-112 collide-with) (collide-spec backgnd)) + (set! (-> v1-112 ignore-process0) pp) + (set! (-> v1-112 ignore-process1) #f) + (set! (-> v1-112 ignore-pat) + (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1) + ) + (set! (-> v1-112 action-mask) (collide-action solid)) + ) + (let ((f0-29 (fill-and-probe-using-line-sphere *collide-cache* a1-15))) + (if (and (>= f0-29 0.0) (< f0-29 1.0)) (goto cfg-89) ) ) ) - (else - (if (< (vector-dot s0-0 (-> gp-0 rot-base)) (cos (-> gp-0 rot-range))) - (return (the-as basic #f)) - ) - ) - ) - ) - ((logtest? (-> gp-0 mask) (search-info-flag cull-xz)) - (let ((f26-3 (-> gp-0 rot-range))) - (set! sv-736 deg-diff) - (set! sv-752 (vector-y-angle (-> gp-0 rot-base))) - (let ((a1-10 (vector-y-angle s0-0))) - (if (< f26-3 (fabs (sv-736 sv-752 a1-10))) - (goto cfg-89) - ) - ) - ) - ) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag back-point)) - (if (< (vector-dot - (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 ack-point)) 1.0) - (-> gp-0 rot-base) - ) - 0.0 - ) - (goto cfg-89) - ) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag combo)) - (if (not (send-event s3-0 'combo)) - (goto cfg-89) - ) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag check-track)) - (if (not (send-event s3-0 'track #f)) - (goto cfg-89) - ) - ) - (if (logtest? (process-mask enemy guard) (-> s3-0 mask)) - (set! s1-1 (logior s1-1 2)) - ) - (if (logtest? (process-mask crate) (-> s3-0 mask)) - (set! s1-1 (logior s1-1 1)) - ) - (if (and (nonzero? (-> (the-as process-focusable s3-0) draw)) - (logtest? (-> (the-as process-focusable s3-0) draw status) (draw-control-status on-screen)) - ) - (set! s1-1 (logior s1-1 4)) - ) - (let ((s1-2 (logand (the-as search-info-flag s1-1) (-> gp-0 mask)))) - (when (and (>= s1-2 (the-as int (-> gp-0 rating))) - (or (zero? (-> gp-0 require)) (logtest? (the-as search-info-flag s1-2) (-> gp-0 require))) - (< f28-0 (-> gp-0 best)) - (< f30-0 (-> gp-0 radius)) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag probe)) - (let ((a1-15 (new 'stack-no-clear 'collide-query))) - (set! (-> a1-15 start-pos quad) (-> gp-0 ack-point quad)) - (vector-! (-> a1-15 move-dist) s2-1 (-> gp-0 ack-point)) - (let ((v1-113 a1-15)) - (set! (-> v1-113 radius) 1228.8) - (set! (-> v1-113 collide-with) (collide-spec backgnd)) - (set! (-> v1-113 ignore-process0) pp) - (set! (-> v1-113 ignore-process1) #f) - (set! (-> v1-113 ignore-pat) - (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1) - ) - (set! (-> v1-113 action-mask) (collide-action solid)) - ) - (let ((f0-29 (fill-and-probe-using-line-sphere *collide-cache* a1-15))) - (if (and (>= f0-29 0.0) (< f0-29 1.0)) - (goto cfg-89) - ) - ) - ) - ) - (set! (-> gp-0 match) s3-0) - (set! (-> gp-0 best) f28-0) - (set! (-> gp-0 rating) (the-as search-info-flag s1-2)) ) + (set! (-> gp-0 match) s3-0) + (set! (-> gp-0 best) f28-0) + (set! (-> gp-0 rating) (the-as search-info-flag s1-2)) ) ) ) @@ -415,8 +390,8 @@ ) ) ) - (-> gp-0 match) ) + (-> gp-0 match) ) ) ) @@ -424,3 +399,4 @@ + diff --git a/goal_src/jak2/engine/debug/debug.gc b/goal_src/jak2/engine/debug/debug.gc index b6222bcf9d..25965e4b20 100644 --- a/goal_src/jak2/engine/debug/debug.gc +++ b/goal_src/jak2/engine/debug/debug.gc @@ -1122,108 +1122,69 @@ (mat matrix) (forward-length float) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (b! (not enable) cfg-8 :delay (nop!)) - (set! var-bucket bucket) - (set! var-position position) - (set! var-forward forward) - (set! var-arg4 arg4) - (set! var-color color) - (set! mat (new 'stack-no-clear 'matrix)) - (set! forward-length (vector-length var-forward)) - (let ((mat-forward (new 'stack-no-clear 'vector)) - (mat-down (new 'stack-no-clear 'vector)) - ) - (vector-normalize-copy! mat-forward var-forward 1.0) - (vector-reset! mat-down) - (let* ((f0-2 (-> mat-forward y)) - (f0-4 (* f0-2 f0-2)) - (f1-0 (-> mat-forward z)) - ) - (if (< f0-4 (* f1-0 f1-0)) - (set! (-> mat-down y) -1.0) - (set! (-> mat-down z) -1.0) - ) + (b! (not enable) cfg-8 :delay (nop!)) + (set! var-bucket bucket) + (set! var-position position) + (set! var-forward forward) + (set! var-arg4 arg4) + (set! var-color color) + (set! mat (new 'stack-no-clear 'matrix)) + (set! forward-length (vector-length var-forward)) + (let ((mat-forward (new 'stack-no-clear 'vector)) + (mat-down (new 'stack-no-clear 'vector)) ) - (forward-down->inv-matrix mat mat-forward mat-down) + (vector-normalize-copy! mat-forward var-forward 1.0) + (vector-reset! mat-down) + (let* ((f0-2 (-> mat-forward y)) + (f0-4 (* f0-2 f0-2)) + (f1-0 (-> mat-forward z)) + ) + (if (< f0-4 (* f1-0 f1-0)) + (set! (-> mat-down y) -1.0) + (set! (-> mat-down z) -1.0) + ) ) - (set! (-> mat trans quad) (-> var-position quad)) - (set! (-> mat trans w) 1.0) - (let ((gp-1 (new 'static 'inline-array vector 3 - (new 'static 'vector :y 0.5877 :z 0.951 :w 0.951) - (new 'static 'vector :x 0.5877 :z -0.5877 :w -0.951) - (new 'static 'vector :x -0.951 :y -0.5878) - ) - ) - (s5-1 (new 'static 'inline-array vector 3 - (new 'static 'vector :x 1.0 :y 0.809 :z 0.3089 :w -0.3088) - (new 'static 'vector :x -0.809 :y -1.0 :z -0.809 :w -0.309) - (new 'static 'vector :x 0.3089 :y 0.8089) - ) - ) - (s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> s1-0 z) 0.0) - (set! (-> s1-0 w) 1.0) - (set! (-> s1-0 x) (* var-arg4 (-> s5-1 2 y))) - (set! (-> s1-0 y) (* var-arg4 (-> gp-1 2 y))) - (vector-matrix*! s3-0 s1-0 mat) - (dotimes (i 10) - (set! (-> s4-0 quad) (-> s3-0 quad)) - (set! (-> s1-0 x) (* var-arg4 (-> (&-> s5-1 0 data i) 0))) - (set! (-> s1-0 y) (* var-arg4 (-> (&-> gp-1 0 data i) 0))) - (vector-matrix*! s3-0 s1-0 mat) - (add-debug-line #t var-bucket s4-0 s3-0 var-color #f (the-as rgba -1)) - (let ((v1-26 s2-0)) - (let ((a0-10 s3-0) - (a1-7 (-> mat vector 2)) - (f0-18 forward-length) - ) - (.lvf vf2 (&-> a1-7 quad)) - (.lvf vf1 (&-> a0-10 quad)) - (let ((a0-11 f0-18)) - (.mov vf3 a0-11) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-26 quad) vf4) - ) - (add-debug-line #t var-bucket s3-0 s2-0 var-color #f (the-as rgba -1)) - (let ((v1-27 s4-0)) - (let ((a0-13 s4-0) - (a1-10 (-> mat vector 2)) - (f0-19 forward-length) - ) - (.lvf vf2 (&-> a1-10 quad)) - (.lvf vf1 (&-> a0-13 quad)) - (let ((a0-14 f0-19)) - (.mov vf3 a0-14) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-27 quad) vf4) - ) - (add-debug-line #t var-bucket s4-0 s2-0 var-color #f (the-as rgba -1)) - ) - ) - (label cfg-8) - 0 - (none) + (forward-down->inv-matrix mat mat-forward mat-down) ) + (set! (-> mat trans quad) (-> var-position quad)) + (set! (-> mat trans w) 1.0) + (let ((gp-1 (new 'static 'inline-array vector 3 + (new 'static 'vector :y 0.5877 :z 0.951 :w 0.951) + (new 'static 'vector :x 0.5877 :z -0.5877 :w -0.951) + (new 'static 'vector :x -0.951 :y -0.5878) + ) + ) + (s5-1 (new 'static 'inline-array vector 3 + (new 'static 'vector :x 1.0 :y 0.809 :z 0.3089 :w -0.3088) + (new 'static 'vector :x -0.809 :y -1.0 :z -0.809 :w -0.309) + (new 'static 'vector :x 0.3089 :y 0.8089) + ) + ) + (s4-0 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'vector)) + (s2-0 (new 'stack-no-clear 'vector)) + (s1-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s1-0 z) 0.0) + (set! (-> s1-0 w) 1.0) + (set! (-> s1-0 x) (* var-arg4 (-> s5-1 2 y))) + (set! (-> s1-0 y) (* var-arg4 (-> gp-1 2 y))) + (vector-matrix*! s3-0 s1-0 mat) + (dotimes (i 10) + (set! (-> s4-0 quad) (-> s3-0 quad)) + (set! (-> s1-0 x) (* var-arg4 (-> (&-> s5-1 0 data i) 0))) + (set! (-> s1-0 y) (* var-arg4 (-> (&-> gp-1 0 data i) 0))) + (vector-matrix*! s3-0 s1-0 mat) + (add-debug-line #t var-bucket s4-0 s3-0 var-color #f (the-as rgba -1)) + (vector+float*! s2-0 s3-0 (-> mat vector 2) forward-length) + (add-debug-line #t var-bucket s3-0 s2-0 var-color #f (the-as rgba -1)) + (vector+float*! s4-0 s4-0 (-> mat vector 2) forward-length) + (add-debug-line #t var-bucket s4-0 s2-0 var-color #f (the-as rgba -1)) + ) + ) + (label cfg-8) + 0 + (none) ) (defun-debug add-debug-circle ((enable symbol) (bucket bucket-id) (position vector) (radius float) (color rgba) (orientation matrix)) diff --git a/goal_src/jak2/engine/geometry/cylinder.gc b/goal_src/jak2/engine/geometry/cylinder.gc index d879c397a9..5c565d9583 100644 --- a/goal_src/jak2/engine/geometry/cylinder.gc +++ b/goal_src/jak2/engine/geometry/cylinder.gc @@ -8,49 +8,25 @@ ;; DECOMP BEGINS (defmethod ray-capsule-intersect cylinder ((obj cylinder) (ray1 vector) (ray2 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((t2-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - 0.0 - 0.0 - (let ((f30-0 (ray-cylinder-intersect ray1 ray2 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) t2-0)) - ) - (let ((f0-5 (ray-sphere-intersect ray1 ray2 (-> obj origin) (-> obj radius)))) - (if (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) - (set! f30-0 f0-5) - ) - ) - (let ((v1-5 s4-0)) - (let ((a0-3 (-> obj origin)) - (a1-3 (-> obj axis)) - (f0-6 (-> obj length)) - ) - (.lvf vf2 (&-> a1-3 quad)) - (.lvf vf1 (&-> a0-3 quad)) - (let ((a0-4 f0-6)) - (.mov vf3 a0-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-5 quad) vf4) - ) - (let ((f0-8 (ray-sphere-intersect ray1 ray2 s4-0 (-> obj radius)))) - (if (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) - (set! f30-0 f0-8) - ) - ) - f30-0 + (let ((t2-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) ) + 0.0 + 0.0 + (let ((f30-0 (ray-cylinder-intersect ray1 ray2 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) t2-0)) + ) + (let ((f0-5 (ray-sphere-intersect ray1 ray2 (-> obj origin) (-> obj radius)))) + (if (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) + (set! f30-0 f0-5) + ) + ) + (vector+float*! s4-0 (-> obj origin) (-> obj axis) (-> obj length)) + (let ((f0-8 (ray-sphere-intersect ray1 ray2 s4-0 (-> obj radius)))) + (if (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) + (set! f30-0 f0-8) + ) + ) + f30-0 ) ) ) @@ -106,7 +82,7 @@ (matrix-axis-angle! s3-0 (-> obj axis) 4096.0) (set! sv-896 (new 'stack-no-clear 'matrix)) (vector-matrix*! (the-as vector sv-896) (-> obj origin) s3-0) - (let ((v1-6 (-> s3-0 vector 3))) + (let ((v1-6 (-> s3-0 trans))) (.lvf vf4 (&-> (-> obj origin) quad)) (.lvf vf5 (&-> sv-896 vector 0 quad)) (.mov.vf vf6 vf0 :mask #b1000) @@ -115,22 +91,7 @@ ) (dotimes (v1-7 8) (vector+! (-> s5-0 vert (+ v1-7 8)) (-> obj origin) s1-0) - (let ((a0-16 (-> s5-0 vert (+ v1-7 8)))) - (let ((a1-13 (-> s5-0 vert (+ v1-7 8))) - (a2-4 s0-0) - (f0-5 (the float v1-7)) - ) - (.lvf vf2 (&-> a2-4 quad)) - (.lvf vf1 (&-> a1-13 quad)) - (let ((a1-14 f0-5)) - (.mov vf3 a1-14) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-16 quad) vf4) - ) + (vector+float*! (-> s5-0 vert (+ v1-7 8)) (-> s5-0 vert (+ v1-7 8)) s0-0 (the float v1-7)) ) (dotimes (s0-1 8) (set! sv-944 (-> s5-0 vert s0-1)) @@ -233,51 +194,27 @@ ) (defmethod ray-flat-cyl-intersect cylinder-flat ((obj cylinder-flat) (arg0 vector) (arg1 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - 0.0 - 0.0 - (let ((f30-0 (ray-cylinder-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) gp-0)) - ) - (let ((f0-5 (ray-arbitrary-circle-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius)))) - (when (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) - (set! f30-0 f0-5) - (set! (-> gp-0 quad) (-> obj origin quad)) - ) - ) - (let ((v1-5 s5-0)) - (let ((a0-5 (-> obj origin)) - (a1-3 (-> obj axis)) - (f0-6 (-> obj length)) - ) - (.lvf vf2 (&-> a1-3 quad)) - (.lvf vf1 (&-> a0-5 quad)) - (let ((a0-6 f0-6)) - (.mov vf3 a0-6) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-5 quad) vf4) - ) - (let ((f0-8 (ray-arbitrary-circle-intersect arg0 arg1 s5-0 (-> obj axis) (-> obj radius)))) - (when (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) - (set! f30-0 f0-8) - (set! (-> gp-0 quad) (-> s5-0 quad)) - ) - ) - f30-0 + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) ) + 0.0 + 0.0 + (let ((f30-0 (ray-cylinder-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) gp-0)) + ) + (let ((f0-5 (ray-arbitrary-circle-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius)))) + (when (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) + (set! f30-0 f0-5) + (set! (-> gp-0 quad) (-> obj origin quad)) + ) + ) + (vector+float*! s5-0 (-> obj origin) (-> obj axis) (-> obj length)) + (let ((f0-8 (ray-arbitrary-circle-intersect arg0 arg1 s5-0 (-> obj axis) (-> obj radius)))) + (when (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) + (set! f30-0 f0-8) + (set! (-> gp-0 quad) (-> s5-0 quad)) + ) + ) + f30-0 ) ) ) @@ -293,11 +230,7 @@ (defmethod debug-draw cylinder-flat ((obj cylinder-flat) (arg0 vector4w)) (local-vars (sv-448 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) + (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) @@ -319,7 +252,7 @@ (matrix-axis-angle! s3-0 (-> obj axis) 4096.0) (set! sv-448 (new 'stack-no-clear 'vector)) (vector-matrix*! sv-448 (-> obj origin) s3-0) - (let ((v1-6 (-> s3-0 vector 3))) + (let ((v1-6 (-> s3-0 trans))) (.lvf vf4 (&-> (-> obj origin) quad)) (.lvf vf5 (&-> sv-448 quad)) (.mov.vf vf6 vf0 :mask #b1000) @@ -328,40 +261,10 @@ ) (dotimes (v1-7 8) (vector+! (-> s5-0 vert (+ v1-7 1)) (-> obj origin) s1-0) - (let ((a0-16 (-> s5-0 vert (+ v1-7 1)))) - (let ((a1-13 (-> s5-0 vert (+ v1-7 1))) - (a2-4 s0-0) - (f0-5 (the float v1-7)) - ) - (.lvf vf2 (&-> a2-4 quad)) - (.lvf vf1 (&-> a1-13 quad)) - (let ((a1-14 f0-5)) - (.mov vf3 a1-14) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-16 quad) vf4) - ) + (vector+float*! (-> s5-0 vert (+ v1-7 1)) (-> s5-0 vert (+ v1-7 1)) s0-0 (the float v1-7)) ) (set! (-> s5-0 vert 0 quad) (-> obj origin quad)) - (let ((v1-11 (-> s5-0 vert 9))) - (let ((a0-19 (-> obj origin)) - (a1-15 (-> obj axis)) - (f0-6 (-> obj length)) - ) - (.lvf vf2 (&-> a1-15 quad)) - (.lvf vf1 (&-> a0-19 quad)) - (let ((a0-20 f0-6)) - (.mov vf3 a0-20) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-11 quad) vf4) - ) + (vector+float*! (-> s5-0 vert 9) (-> obj origin) (-> obj axis) (-> obj length)) (dotimes (s2-1 16) (dotimes (s1-1 10) (vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0) @@ -370,9 +273,9 @@ (camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0) ) ) - (let ((v1-28 s5-0)) + (let ((v1-29 s5-0)) (set! s5-0 s4-0) - (set! s4-0 v1-28) + (set! s4-0 v1-29) ) ) ) @@ -385,3 +288,4 @@ + diff --git a/goal_src/jak2/engine/geometry/path.gc b/goal_src/jak2/engine/geometry/path.gc index 3e59b2b755..58c5b0052d 100644 --- a/goal_src/jak2/engine/geometry/path.gc +++ b/goal_src/jak2/engine/geometry/path.gc @@ -7,6 +7,8 @@ ;; DECOMP BEGINS +;; definition for method 9 of type path-control +;; WARN: Return type mismatch int vs none. (defmethod debug-draw path-control ((obj path-control)) (cond ((logtest? (-> obj flags) (path-control-flag not-found)) @@ -63,6 +65,7 @@ (none) ) +;; definition for method 18 of type path-control (defmethod total-distance path-control ((obj path-control)) "Calcuate the total path length by summing the distance between each adjacent [[curve]] vertex" (let ((f30-0 0.0)) @@ -73,6 +76,7 @@ ) ) +;; definition for method 18 of type curve-control (defmethod total-distance curve-control ((obj curve-control)) "Calcuate the total path length by summing the distance between each adjacent [[curve]] vertex" (let ((f0-0 (-> obj curve length))) @@ -84,6 +88,8 @@ ) ) +;; definition for method 10 of type path-control +;; INFO: Used lq/sq (defmethod get-point-in-path! path-control ((obj path-control) (ret vector) (idx float) (search-type symbol)) "Depending on the value of `idx`, the result can be quite different: - if `idx` is less than `0.0` - return the first vertex in the path @@ -122,6 +128,8 @@ ret ) +;; definition for method 11 of type path-control +;; INFO: Used lq/sq (defmethod get-random-point path-control ((obj path-control) (arg0 vector)) "Attempts to retrieve a random point along the path, returns the [[*null-vector*]] if no vertices are defined" (cond @@ -141,6 +149,7 @@ arg0 ) +;; definition for method 14 of type path-control (defmethod get-point-at-percent-along-path! path-control ((obj path-control) (ret vector) (percent float) (search-type symbol)) "@param! ret The [[vector]] that is used to hold the return value @param percent The percentage along the path @@ -150,6 +159,7 @@ (get-point-in-path! obj ret (* percent (the float (+ (-> obj curve num-cverts) -1))) search-type) ) +;; definition for method 14 of type curve-control (defmethod get-point-at-percent-along-path! curve-control ((obj curve-control) (arg0 vector) (arg1 float) (arg2 symbol)) "@param! ret The [[vector]] that is used to hold the return value @param percent The percentage along the path @@ -169,6 +179,7 @@ arg0 ) +;; definition for method 10 of type curve-control (defmethod get-point-in-path! curve-control ((obj curve-control) (arg0 vector) (arg1 float) (arg2 symbol)) "Depending on the value of `idx`, the result can be quite different: - if `idx` is less than `0.0` - return the first vertex in the path @@ -194,6 +205,7 @@ arg0 ) +;; definition for method 26 of type path-control (defmethod displacement-between-two-points! path-control ((obj path-control) (ret vector) (idx float) (mag float)) "Return value can differ quite a bit: - If [[path-control-flag::4]] is set OR there are less than 2 vertices OR `idx` is less than `0.0` - return [[*null-vector*]] @@ -223,12 +235,14 @@ ret ) +;; definition for method 12 of type path-control (defmethod displacement-between-two-points-copy! path-control ((obj path-control) (ret vector) (idx float) (mag float)) "Calls [[path-control::26]] with the provided args @see [[path-control::26]]" (displacement-between-two-points! obj ret idx mag) ) +;; definition for method 15 of type path-control (defmethod displacement-between-points-at-percent-scaled! path-control ((obj path-control) (ret vector) (percent float) (mag float)) "Calls [[path-control::12], with the `idx` at a given percent along the path @param ret The [[vector]] that is used to hold the return value @@ -243,6 +257,7 @@ ) ) +;; definition for method 13 of type path-control (defmethod displacement-between-two-points-normalized! path-control ((obj path-control) (ret vector) (idx float)) "Calls [[path-control::26], with the provided `idx` @param! ret The [[vector]] the result is stored within @@ -253,6 +268,7 @@ (vector-normalize! ret 1.0) ) +;; definition for method 16 of type path-control (defmethod displacement-between-points-at-percent-normalized! path-control ((obj path-control) (ret vector) (percent float)) "Calls [[path-control::13], with the `idx` at a given percent along the path @param! ret The [[vector]] the result is stored within @@ -263,6 +279,7 @@ (displacement-between-two-points-normalized! obj ret (* percent (the float (+ (-> obj curve num-cverts) -1)))) ) +;; definition for method 26 of type curve-control (defmethod displacement-between-two-points! curve-control ((obj curve-control) (arg0 vector) (arg1 float) (arg2 float)) "Return value can differ quite a bit: - If [[path-control-flag::4]] is set OR there are less than 2 vertices OR `idx` is less than `0.0` - return [[*null-vector*]] @@ -312,12 +329,14 @@ ) ) +;; definition for method 12 of type curve-control (defmethod displacement-between-two-points-copy! curve-control ((obj curve-control) (ret vector) (percent float) (mag float)) "Calls [[path-control::26]] with the provided args @see [[path-control::26]]" (displacement-between-two-points! obj ret (/ percent (the float (+ (-> obj curve num-cverts) -1))) mag) ) +;; definition for method 15 of type curve-control (defmethod displacement-between-points-at-percent-scaled! curve-control ((obj curve-control) (ret vector) (idx float) (mag float)) "Calls [[path-control::12], with the `idx` at a given percent along the path @param ret The [[vector]] that is used to hold the return value @@ -327,6 +346,7 @@ (displacement-between-two-points! obj ret idx mag) ) +;; definition for method 16 of type curve-control (defmethod displacement-between-points-at-percent-normalized! curve-control ((obj curve-control) (ret vector) (percent float)) "Calls [[path-control::13], with the `idx` at a given percent along the path @param! ret The [[vector]] the result is stored within @@ -338,6 +358,7 @@ (vector-normalize! ret 1.0) ) +;; definition for method 13 of type curve-control (defmethod displacement-between-two-points-normalized! curve-control ((obj curve-control) (ret vector) (idx float)) "Calls [[path-control::26], with the provided `idx` @param! ret The [[vector]] the result is stored within @@ -351,6 +372,8 @@ ) ) +;; definition for method 22 of type path-control +;; INFO: Used lq/sq (defmethod get-furthest-point-on-path path-control ((obj path-control) (point vector)) "@param point The point to calculate distance from @returns the `vertex-idx.interpolant` value to the point on the path furthest away from the `point` @@ -386,6 +409,7 @@ ) ) +;; definition for method 23 of type path-control (defmethod get-path-percentage-at-furthest-point path-control ((obj path-control) (point vector)) "@param point The point to calculate distance from @returns the percentage of path completion from the point on the path furthest away from the `point` @@ -393,6 +417,8 @@ (/ (get-furthest-point-on-path obj point) (the float (+ (-> obj curve num-cverts) -1))) ) +;; definition for method 9 of type curve-control +;; WARN: Return type mismatch int vs none. (defmethod debug-draw curve-control ((obj curve-control)) (cond ((logtest? (-> obj flags) (path-control-flag not-found)) @@ -441,49 +467,31 @@ (none) ) +;; definition for method 24 of type path-control (defmethod path-control-method-24 path-control ((obj path-control) (arg0 vector)) "TODO" - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 (-> obj curve num-cverts))) - (let ((f30-0 (/ 1.0 (the float s4-0)))) - (set-vector! arg0 0.0 0.0 0.0 0.0) - (dotimes (s3-0 s4-0) - (let ((s2-0 arg0)) - (let ((s1-0 arg0) - (v1-4 (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-0) 'interp)) - (f0-7 f30-0) - ) - (.lvf vf2 (&-> v1-4 quad)) - (.lvf vf1 (&-> s1-0 quad)) - (let ((v1-5 f0-7)) - (.mov vf3 v1-5) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s2-0 quad) vf4) - ) - ) - ) - (dotimes (s3-1 s4-0) - (let ((f0-10 - (vector-vector-distance arg0 (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-1) 'interp)) - ) - ) - (if (< (-> arg0 w) f0-10) - (set! (-> arg0 w) (+ 4096.0 f0-10)) - ) + (let ((s4-0 (-> obj curve num-cverts))) + (let ((f30-0 (/ 1.0 (the float s4-0)))) + (set-vector! arg0 0.0 0.0 0.0 0.0) + (dotimes (s3-0 s4-0) + (vector+float*! + arg0 + arg0 + (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-0) 'interp) + f30-0 ) ) ) - arg0 + (dotimes (s3-1 s4-0) + (let ((f0-10 + (vector-vector-distance arg0 (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-1) 'interp)) + ) + ) + (if (< (-> arg0 w) f0-10) + (set! (-> arg0 w) (+ 4096.0 f0-10)) + ) + ) + ) ) + arg0 ) diff --git a/goal_src/jak2/engine/geometry/vol.gc b/goal_src/jak2/engine/geometry/vol.gc index 915e92ac5a..08221ad455 100644 --- a/goal_src/jak2/engine/geometry/vol.gc +++ b/goal_src/jak2/engine/geometry/vol.gc @@ -7,6 +7,7 @@ ;; DECOMP BEGINS +;; definition for function plane-volume-intersect-dist (defun plane-volume-intersect-dist ((arg0 vector) (arg1 vector) (arg2 vector)) (let ((f0-1 (vector-dot arg1 arg0)) (f1-1 (vector-dot arg2 arg0)) @@ -18,6 +19,8 @@ ) ) +;; definition for method 9 of type plane-volume +;; INFO: Used lq/sq ;; WARN: Stack slot offset 148 signed mismatch ;; WARN: Stack slot offset 148 signed mismatch ;; WARN: Stack slot offset 148 signed mismatch @@ -60,197 +63,135 @@ (sv-240 int) (sv-256 int) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (set! (-> obj volume-type) arg0) - (set! (-> obj point-count) 0) - (set! (-> obj first-point) (the-as (pointer vector) (-> arg1 data (-> arg1 length)))) - (set! (-> obj normal-count) 0) - (set! (-> obj first-normal) (the-as (pointer vector) (-> arg2 data (-> arg2 length)))) - (dotimes (s3-0 (-> obj num-planes)) - (set! sv-176 (new 'stack-no-clear 'vector)) - (set! (-> sv-176 quad) (the-as uint128 0)) - (set! sv-192 (new 'stack-no-clear 'vector)) - (set! (-> sv-192 quad) (the-as uint128 0)) - (set! sv-208 (new 'stack-no-clear 'vector)) - (set! (-> sv-208 quad) (the-as uint128 0)) - (set! sv-224 (new 'stack-no-clear 'vector)) - (set! (-> sv-224 quad) (the-as uint128 0)) - 0.0 - 0.0 - 0.0 - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (let ((s1-0 (new-stack-vector0)) - (s0-0 0) - (s2-0 (-> obj plane)) - ) - (set! sv-240 0) - (while (< sv-240 (-> obj num-planes)) - (when (!= s3-0 sv-240) - (vector-float*! sv-176 (the-as vector (-> s2-0 sv-240)) (-> s2-0 sv-240 w)) - (vector-cross! sv-192 (the-as vector (-> s2-0 sv-240)) (the-as vector (-> s2-0 s3-0))) - (vector-normalize! sv-192 1.0) - (vector-cross! sv-208 sv-192 (the-as vector (-> s2-0 sv-240))) - (vector-normalize! sv-208 1.0) - (let ((f0-4 (plane-volume-intersect-dist (-> s2-0 s3-0) sv-176 sv-208))) - (when (!= f0-4 409600000.0) - (let ((v1-28 sv-224)) - (let ((a0-12 sv-176)) - (.lvf vf2 (&-> sv-208 quad)) - (.lvf vf1 (&-> a0-12 quad)) - ) - (let ((a0-13 f0-4)) - (.mov vf3 a0-13) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-28 quad) vf4) - ) - (set! sv-144 (new-stack-vector0)) - (set! sv-148 0.0) - (set! sv-152 0) - (set! sv-160 (new-stack-vector0)) - (set! (-> sv-144 quad) (-> sv-224 quad)) - (set! sv-256 0) - (while (< sv-256 (-> obj num-planes)) - (when (and (!= sv-256 s3-0) (!= sv-256 sv-240)) - (let ((f0-6 (plane-volume-intersect-dist (-> s2-0 sv-256) sv-144 sv-192))) - (cond - ((= f0-6 409600000.0) - ) - ((zero? sv-152) - (let ((v1-42 sv-144)) - (let ((a0-19 sv-144)) - (.lvf vf2 (&-> sv-192 quad)) - (.lvf vf1 (&-> a0-19 quad)) - ) - (let ((a0-20 f0-6)) - (.mov vf3 a0-20) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-42 quad) vf4) - ) - (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) - (set! sv-148 8192000.0) - (set! sv-152 1) - ) - ((begin (vector-float*! sv-224 sv-192 f0-6) (>= (vector-dot sv-224 sv-160) 0.0)) - ) - ((>= (vector-dot sv-224 (the-as vector (-> s2-0 sv-256))) 0.0) - (when (< (fabs f0-6) (fabs (the-as float sv-148))) - (set! sv-148 f0-6) - (set! sv-152 (+ sv-152 1)) - ) - ) - (else - (let ((v1-59 sv-144)) - (let ((a0-28 sv-144) - (a1-15 sv-192) - (f1-8 f0-6) - ) - (.lvf vf2 (&-> a1-15 quad)) - (.lvf vf1 (&-> a0-28 quad)) - (let ((a0-29 f1-8)) - (.mov vf3 a0-29) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-59 quad) vf4) - ) - (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) - (set! sv-152 (+ sv-152 1)) - (if (< (fabs f0-6) (fabs (the-as float sv-148))) - (set! sv-148 (- (the-as float sv-148) f0-6)) - (set! sv-148 0.0) - ) - ) - ) - ) - ) - (set! sv-256 (+ sv-256 1)) - ) - (cond - ((zero? sv-152) - ) - ((= (the-as float sv-148) 0.0) - ) - (else - (dotimes (v1-76 (-> obj num-planes)) - (when (and (!= v1-76 s3-0) (!= v1-76 sv-240)) - (if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-76))) (-> s2-0 v1-76 w))) - (goto cfg-42) - ) - ) - ) - (let ((v1-80 sv-224)) - (let ((a0-46 sv-144) - (a1-18 sv-192) - (f0-12 sv-148) - ) - (.lvf vf2 (&-> a1-18 quad)) - (.lvf vf1 (&-> a0-46 quad)) - (let ((a0-47 (the-as float f0-12))) - (.mov vf3 a0-47) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-80 quad) vf4) - ) + (set! (-> obj volume-type) arg0) + (set! (-> obj point-count) 0) + (set! (-> obj first-point) (the-as (pointer vector) (-> arg1 data (-> arg1 length)))) + (set! (-> obj normal-count) 0) + (set! (-> obj first-normal) (the-as (pointer vector) (-> arg2 data (-> arg2 length)))) + (dotimes (s3-0 (-> obj num-planes)) + (set! sv-176 (new 'stack-no-clear 'vector)) + (set! (-> sv-176 quad) (the-as uint128 0)) + (set! sv-192 (new 'stack-no-clear 'vector)) + (set! (-> sv-192 quad) (the-as uint128 0)) + (set! sv-208 (new 'stack-no-clear 'vector)) + (set! (-> sv-208 quad) (the-as uint128 0)) + (set! sv-224 (new 'stack-no-clear 'vector)) + (set! (-> sv-224 quad) (the-as uint128 0)) + 0.0 + 0.0 + 0.0 + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (let ((s1-0 (new-stack-vector0)) + (s0-0 0) + (s2-0 (-> obj plane)) + ) + (set! sv-240 0) + (while (< sv-240 (-> obj num-planes)) + (when (!= s3-0 sv-240) + (vector-float*! sv-176 (the-as vector (-> s2-0 sv-240)) (-> s2-0 sv-240 w)) + (vector-cross! sv-192 (the-as vector (-> s2-0 sv-240)) (the-as vector (-> s2-0 s3-0))) + (vector-normalize! sv-192 1.0) + (vector-cross! sv-208 sv-192 (the-as vector (-> s2-0 sv-240))) + (vector-normalize! sv-208 1.0) + (let ((f0-4 (plane-volume-intersect-dist (-> s2-0 s3-0) sv-176 sv-208))) + (when (!= f0-4 409600000.0) + (vector+float*! sv-224 sv-176 sv-208 f0-4) + (set! sv-144 (new-stack-vector0)) + (set! sv-148 0.0) + (set! sv-152 0) + (set! sv-160 (new-stack-vector0)) + (set! (-> sv-144 quad) (-> sv-224 quad)) + (set! sv-256 0) + (while (< sv-256 (-> obj num-planes)) + (when (and (!= sv-256 s3-0) (!= sv-256 sv-240)) + (let ((f0-6 (plane-volume-intersect-dist (-> s2-0 sv-256) sv-144 sv-192))) (cond - ((< (-> arg1 allocated-length) (+ (-> arg1 length) 2)) - (format 0 "ERROR : vol-control #x~X out of volume points~%" obj) + ((= f0-6 409600000.0) + ) + ((zero? sv-152) + (vector+float*! sv-144 sv-144 sv-192 f0-6) + (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) + (set! sv-148 8192000.0) + (set! sv-152 1) + ) + ((begin (vector-float*! sv-224 sv-192 f0-6) (>= (vector-dot sv-224 sv-160) 0.0)) + ) + ((>= (vector-dot sv-224 (the-as vector (-> s2-0 sv-256))) 0.0) + (when (< (fabs f0-6) (fabs (the-as float sv-148))) + (set! sv-148 f0-6) + (set! sv-152 (+ sv-152 1)) + ) ) (else - (set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad)) - (set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad)) - (+! (-> arg1 length) 2) - (+! (-> obj point-count) 2) + (vector+float*! sv-144 sv-144 sv-192 f0-6) + (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) + (set! sv-152 (+ sv-152 1)) + (if (< (fabs f0-6) (fabs (the-as float sv-148))) + (set! sv-148 (- (the-as float sv-148) f0-6)) + (set! sv-148 0.0) + ) ) ) - (vector+! s1-0 s1-0 sv-144) - (vector+! s1-0 s1-0 sv-224) - (+! s0-0 2) ) ) + (set! sv-256 (+ sv-256 1)) + ) + (cond + ((zero? sv-152) + ) + ((= (the-as float sv-148) 0.0) + ) + (else + (dotimes (v1-79 (-> obj num-planes)) + (when (and (!= v1-79 s3-0) (!= v1-79 sv-240)) + (if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-79))) (-> s2-0 v1-79 w))) + (goto cfg-42) + ) + ) + ) + (vector+float*! sv-224 sv-144 sv-192 (the-as float sv-148)) + (cond + ((< (-> arg1 allocated-length) (+ (-> arg1 length) 2)) + (format 0 "ERROR : vol-control #x~X out of volume points~%" obj) + ) + (else + (set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad)) + (set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad)) + (+! (-> arg1 length) 2) + (+! (-> obj point-count) 2) + ) + ) + (vector+! s1-0 s1-0 sv-144) + (vector+! s1-0 s1-0 sv-224) + (+! s0-0 2) + ) ) ) ) - (label cfg-42) - (set! sv-240 (+ sv-240 1)) ) - (when (nonzero? s0-0) - (vector-float*! s1-0 s1-0 (/ 1.0 (the float s0-0))) - (cond - ((< (-> arg2 allocated-length) (+ (-> arg2 length) 2)) - (format 0 "ERROR : vol-control #x~X out of volume normals~%" obj) - ) - (else - (set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad)) - (set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad)) - (+! (-> arg2 length) 2) - (set! (-> obj normal-count) (+ (-> obj normal-count) 2)) - ) + (label cfg-42) + (set! sv-240 (+ sv-240 1)) + ) + (when (nonzero? s0-0) + (vector-float*! s1-0 s1-0 (/ 1.0 (the float s0-0))) + (cond + ((< (-> arg2 allocated-length) (+ (-> arg2 length) 2)) + (format 0 "ERROR : vol-control #x~X out of volume normals~%" obj) + ) + (else + (set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad)) + (set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad)) + (+! (-> arg2 length) 2) + (set! (-> obj normal-count) (+ (-> obj normal-count) 2)) ) ) ) ) - obj ) + obj ) +;; definition for method 10 of type plane-volume ;; WARN: Return type mismatch int vs none. (defmethod debug-draw plane-volume ((obj plane-volume)) (let* ((v1-0 (-> obj volume-type)) @@ -285,6 +226,7 @@ (none) ) +;; definition for method 11 of type plane-volume (defmethod point-in-vol? plane-volume ((obj plane-volume) (arg0 vector) (arg1 float)) "TODO - Checks if the given [[vector]] point is inside the volume defined by 6 [[plane]]s by atleast the padding value provided" (dotimes (v1-0 (-> obj num-planes)) @@ -295,6 +237,7 @@ #t ) +;; definition for method 9 of type vol-control ;; WARN: Return type mismatch int vs none. (defmethod debug-draw vol-control ((obj vol-control)) (with-pp @@ -339,6 +282,7 @@ ) ) +;; definition for method 10 of type vol-control (defmethod vol-control-method-10 vol-control ((obj vol-control) (arg0 plane)) (dotimes (s4-0 (-> obj neg-vol-count)) (if (point-in-vol? (-> obj neg-vol s4-0) arg0 0.0) @@ -352,7 +296,3 @@ ) #f ) - - - - diff --git a/goal_src/jak2/engine/gfx/mood/mood-funcs.gc b/goal_src/jak2/engine/gfx/mood/mood-funcs.gc index 165d8725fe..87c93efbec 100644 --- a/goal_src/jak2/engine/gfx/mood/mood-funcs.gc +++ b/goal_src/jak2/engine/gfx/mood/mood-funcs.gc @@ -1003,50 +1003,27 @@ ;; WARN: Return type mismatch int vs none. (defun update-drill-lights ((arg0 mood-context)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((a1-0 (-> arg0 light-group)) - (s5-0 (-> arg0 light-group 1)) - (gp-0 (-> arg0 light-group 2)) - ) - (mem-copy! (the-as pointer s5-0) (the-as pointer a1-0) 192) - (let ((a0-2 (new 'static 'vector :x 0.902 :y 0.675)) - (v1-0 (-> s5-0 ambi color)) - ) - (let ((a1-1 (-> s5-0 ambi color)) - (f0-0 0.3) - ) - (.lvf vf2 (&-> a0-2 quad)) - (.lvf vf1 (&-> a1-1 quad)) - (let ((a0-3 f0-0)) - (.mov vf3 a0-3) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) + (let ((a1-0 (-> arg0 light-group)) + (s5-0 (-> arg0 light-group 1)) + (gp-0 (-> arg0 light-group 2)) ) - (let ((v1-1 (-> gp-0 dir0))) - (set! (-> v1-1 direction x) 0.0) - (set! (-> v1-1 direction y) 1.0) - (set! (-> v1-1 direction z) 0.0) - (set! (-> v1-1 direction w) 1.0) - ) - (set-vector! (-> gp-0 dir0 color) 0.3 0.3 0.35 1.0) - (set-vector! (-> gp-0 ambi color) 0.3 0.3 0.35 1.0) - (set! (-> gp-0 dir0 extra x) 0.5) - (set! (-> gp-0 ambi extra x) 0.5) + (mem-copy! (the-as pointer s5-0) (the-as pointer a1-0) 192) + (let ((a0-2 (new 'static 'vector :x 0.902 :y 0.675))) + (vector+float*! (the-as vector (-> s5-0 ambi color)) (the-as vector (-> s5-0 ambi color)) a0-2 0.3) ) - 0 - (none) + (let ((v1-2 (-> gp-0 dir0))) + (set! (-> v1-2 direction x) 0.0) + (set! (-> v1-2 direction y) 1.0) + (set! (-> v1-2 direction z) 0.0) + (set! (-> v1-2 direction w) 1.0) + ) + (set-vector! (-> gp-0 dir0 color) 0.3 0.3 0.35 1.0) + (set-vector! (-> gp-0 ambi color) 0.3 0.3 0.35 1.0) + (set! (-> gp-0 dir0 extra x) 0.5) + (set! (-> gp-0 ambi extra x) 0.5) ) + 0 + (none) ) ;; WARN: Return type mismatch int vs none. diff --git a/goal_src/jak2/engine/math/vector.gc b/goal_src/jak2/engine/math/vector.gc index d196bc0c99..6e58fb8cff 100644 --- a/goal_src/jak2/engine/math/vector.gc +++ b/goal_src/jak2/engine/math/vector.gc @@ -154,6 +154,7 @@ (defun vector-float*! ((arg0 vector) (arg1 vector) (arg2 float)) "Multiply all values in a vector by arg2. Set w to 1." + (declare (inline)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) @@ -561,127 +562,39 @@ (defun vector-v+! ((arg0 vector) (arg1 vector) (arg2 vector)) "Euler forward step, using the current display time settings" (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((f0-0 (-> pp clock seconds-per-frame))) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (let ((a1-1 f0-0)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg1 arg2 (-> pp clock seconds-per-frame)) + arg0 ) ) (defun vector-v*float+! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) "Euler forward step, scaling velocity by velocity-scale" (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((f0-1 (* arg3 (-> pp clock seconds-per-frame)))) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (let ((a1-1 f0-1)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg1 arg2 (* arg3 (-> pp clock seconds-per-frame))) + arg0 ) ) (defun vector-v++! ((arg0 vector) (arg1 vector)) "Update position in place, using display's current timing" (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a2-0 arg0) - (f0-0 (-> pp clock seconds-per-frame)) - ) - (.lvf vf2 (&-> arg1 quad)) - (.lvf vf1 (&-> a2-0 quad)) - (let ((a1-1 f0-0)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg0 arg1 (-> pp clock seconds-per-frame)) + arg0 ) ) (defun vector-v*float! ((arg0 vector) (arg1 vector) (arg2 float)) "Go from velocity to delta-p per frame, scaling by scale" (with-pp - (the-as vector (vector-float*! arg0 arg1 (* arg2 (-> pp clock seconds-per-frame)))) + (vector-float*! arg0 arg1 (* arg2 (-> pp clock seconds-per-frame))) ) ) (defun vector-v*float++! ((arg0 vector) (arg1 vector) (arg2 float)) "update position with given velocity, scaled by scale." (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a3-0 arg0) - (f0-1 (* arg2 (-> pp clock seconds-per-frame))) - ) - (.lvf vf2 (&-> arg1 quad)) - (.lvf vf1 (&-> a3-0 quad)) - (let ((a1-1 f0-1)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg0 arg1 (* arg2 (-> pp clock seconds-per-frame))) + arg0 ) ) diff --git a/goal_src/jak2/engine/physics/chain-physics.gc b/goal_src/jak2/engine/physics/chain-physics.gc index 8bc5b54d3d..33f13c2796 100644 --- a/goal_src/jak2/engine/physics/chain-physics.gc +++ b/goal_src/jak2/engine/physics/chain-physics.gc @@ -71,7 +71,7 @@ (defmethod update chain-physics ((obj chain-physics) (arg0 process-drawable)) (local-vars - (v1-77 float) + (v1-78 float) (f0-11 float) (sv-272 chain-physics-joint) (sv-288 vector) @@ -204,39 +204,27 @@ (.mul.x.vf acc vf2 vf3) (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) (.svf (&-> sv-384 quad) vf4) - (let ((v1-57 sv-528)) - (let ((a0-25 s3-0)) - (.lvf vf2 (&-> sv-400 quad)) - (.lvf vf1 (&-> a0-25 quad)) - ) - (let ((a0-26 f28-1)) - (.mov vf3 a0-26) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-57 quad) vf4) - ) + (vector+float*! sv-528 s3-0 sv-400 f28-1) ) ) (chain-physics-method-17 obj sv-528) (set! sv-432 (new 'stack-no-clear 'vector)) - (let ((v1-60 s3-0) - (a0-28 sv-528) + (let ((v1-61 s3-0) + (a0-27 sv-528) ) - (.lvf vf4 (&-> v1-60 quad)) - (.lvf vf5 (&-> a0-28 quad)) + (.lvf vf4 (&-> v1-61 quad)) + (.lvf vf5 (&-> a0-27 quad)) ) (.mov.vf vf6 vf0 :mask #b1000) (.sub.vf vf6 vf4 vf5 :mask #b111) (.svf (&-> sv-432 quad) vf6) (vector-normalize-ret-len! sv-432 1.0) (set! sv-416 (new 'stack-no-clear 'vector)) - (let ((v1-63 sv-528) - (a0-31 (-> sv-272 position)) + (let ((v1-64 sv-528) + (a0-30 (-> sv-272 position)) ) - (.lvf vf4 (&-> v1-63 quad)) - (.lvf vf5 (&-> a0-31 quad)) + (.lvf vf4 (&-> v1-64 quad)) + (.lvf vf5 (&-> a0-30 quad)) ) (.mov.vf vf6 vf0 :mask #b1000) (.sub.vf vf6 vf4 vf5 :mask #b111) @@ -254,16 +242,16 @@ ) ) ) - (let ((v1-72 (-> sv-272 velocity))) + (let ((v1-73 (-> sv-272 velocity))) (.lvf vf2 (&-> sv-432 quad)) (.lvf vf1 (&-> sv-416 quad)) - (let ((a0-38 f0-11)) - (.mov vf3 a0-38) + (let ((a0-37 f0-11)) + (.mov vf3 a0-37) ) (.add.x.vf vf4 vf0 vf0 :mask #b1000) (.mul.x.vf acc vf2 vf3) (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-72 quad) vf4) + (.svf (&-> v1-73 quad) vf4) ) (vector+! sv-528 (-> sv-272 position) (-> sv-272 velocity)) (let ((a2-9 (vector-! (new 'stack-no-clear 'vector) s3-0 sv-528))) @@ -273,8 +261,8 @@ (.mul.x.vf acc vf2 vf1 :mask #b1) (.add.mul.y.vf acc vf2 vf1 acc :mask #b1) (.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1) - (.mov v1-77 vf1) - (let* ((f0-13 v1-77) + (.mov v1-78 vf1) + (let* ((f0-13 v1-78) (f1-6 (* (-> obj maximum-stretch) (-> obj joint-length))) (f2-3 f1-6) ) @@ -296,11 +284,11 @@ (vector-cross! (the-as vector (-> s4-0 vector)) (-> s4-0 vector 1) s2-0) (vector-normalize! (the-as vector (-> s4-0 vector)) 1.0) (set! sv-496 (new 'stack-no-clear 'vector)) - (let ((v1-96 (-> sv-272 old-x)) - (a0-52 (-> s4-0 vector)) + (let ((v1-97 (-> sv-272 old-x)) + (a0-51 (-> s4-0 vector)) ) - (.lvf vf1 (&-> v1-96 quad)) - (.lvf vf2 (&-> a0-52 0 quad)) + (.lvf vf1 (&-> v1-97 quad)) + (.lvf vf2 (&-> a0-51 0 quad)) ) (.outer.product.a.vf acc vf1 vf2) (.outer.product.b.vf vf3 vf2 vf1 acc) @@ -316,8 +304,8 @@ (set! sv-448 (-> s4-0 vector)) (let ((f0-20 (cos (-> obj axial-slop)))) (.lvf vf1 (&-> sv-448 0 quad)) - (let ((v1-106 f0-20)) - (.mov vf2 v1-106) + (let ((v1-107 f0-20)) + (.mov vf2 v1-107) ) ) (.add.x.vf vf1 vf0 vf0 :mask #b1000) @@ -328,8 +316,8 @@ (let ((f0-22 (sin (-> obj axial-slop)))) (.lvf vf2 (&-> sv-496 quad)) (.lvf vf1 (&-> sv-480 0 quad)) - (let ((v1-112 f0-22)) - (.mov vf3 v1-112) + (let ((v1-113 f0-22)) + (.mov vf3 v1-113) ) ) (.add.x.vf vf4 vf0 vf0 :mask #b1000) @@ -390,7 +378,3 @@ (set! (-> arg1 turn-off-start) 0) 0 ) - - - - diff --git a/goal_src/jak2/engine/physics/trajectory.gc b/goal_src/jak2/engine/physics/trajectory.gc index 1f172e035b..1fda361bc4 100644 --- a/goal_src/jak2/engine/physics/trajectory.gc +++ b/goal_src/jak2/engine/physics/trajectory.gc @@ -8,33 +8,9 @@ ;; DECOMP BEGINS (defmethod compute-trans-at-time trajectory ((obj trajectory) (arg0 float) (arg1 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg1)) - (let ((a3-0 (-> obj initial-position)) - (t0-0 (-> obj initial-velocity)) - (f0-0 arg0) - ) - (.lvf vf2 (&-> t0-0 quad)) - (.lvf vf1 (&-> a3-0 quad)) - (let ((a3-1 f0-0)) - (.mov vf3 a3-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - (+! (-> arg1 y) (* 0.5 arg0 arg0 (-> obj gravity))) - arg1 - ) + (vector+float*! arg1 (-> obj initial-position) (-> obj initial-velocity) arg0) + (+! (-> arg1 y) (* 0.5 arg0 arg0 (-> obj gravity))) + arg1 ) (defmethod compute-transv-at-time trajectory ((obj trajectory) (arg0 float) (arg1 vector)) @@ -231,43 +207,20 @@ ) (defmethod point-tracker-method-10 point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cond - ((>= 0.0 arg3) - (set! (-> arg0 quad) (-> arg1 quad)) - ) - ((>= arg3 1.0) - (set! (-> arg0 quad) (-> arg2 quad)) - ) - (else - (let ((a1-1 arg0)) - (let ((v1-3 arg2) - (a0-6 (vector-! (new 'stack-no-clear 'vector) arg1 arg2)) - (f0-3 (- 1.0 arg3)) - ) - (.lvf vf2 (&-> a0-6 quad)) - (.lvf vf1 (&-> v1-3 quad)) - (let ((v1-4 f0-3)) - (.mov vf3 v1-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a1-1 quad) vf4) - (vector-lerp! arg0 a1-1 arg2 arg3) - ) + (cond + ((>= 0.0 arg3) + (set! (-> arg0 quad) (-> arg1 quad)) + ) + ((>= arg3 1.0) + (set! (-> arg0 quad) (-> arg2 quad)) + ) + (else + (let ((a1-2 (vector+float*! arg0 arg2 (vector-! (new 'stack-no-clear 'vector) arg1 arg2) (- 1.0 arg3)))) + (vector-lerp! arg0 a1-2 arg2 arg3) ) ) - arg0 ) + arg0 ) (defmethod point-tracker-method-11 point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) diff --git a/goal_src/jak2/engine/target/board/board-states.gc b/goal_src/jak2/engine/target/board/board-states.gc index 14d2ee6995..a2e1d089e3 100644 --- a/goal_src/jak2/engine/target/board/board-states.gc +++ b/goal_src/jak2/engine/target/board/board-states.gc @@ -34,6 +34,7 @@ (format 0 "SKIP: target-board-clone-anim in board-states~%") +;; definition for function vector-vector-angle (defun vector-vector-angle ((arg0 vector) (arg1 vector)) (let ((s4-0 (new 'stack-no-clear 'matrix)) (gp-0 (new 'stack-no-clear 'matrix)) @@ -46,6 +47,8 @@ ) ) +;; definition for function target-board-anim-trans +;; WARN: Return type mismatch float vs none. (defbehavior target-board-anim-trans target () (let ((f26-0 (deg- (quaternion-vector-y-angle (-> self control dir-targ) (-> self control local-normal)) @@ -126,6 +129,9 @@ (none) ) +;; definition for function target-board-spin-check +;; INFO: Used lq/sq +;; WARN: Return type mismatch object vs none. (defbehavior target-board-spin-check target () (when (and (or (cpad-pressed? (-> self control unknown-cpad-info00 number) r1) (and (cpad-hold? (-> self control unknown-cpad-info00 number) r1) @@ -288,6 +294,8 @@ (none) ) +;; definition for function target-board-halfpipe-trans +;; WARN: Return type mismatch int vs none. (defbehavior target-board-halfpipe-trans target () (when (and (logtest? (focus-status halfpipe) (-> self focus-status)) *camera*) (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -298,9 +306,9 @@ (f0-3 (vector-dot (-> self control unknown-vector34) v1-11)) (s4-1 (vector-float*! (new 'stack-no-clear 'vector) (-> self control unknown-vector34) f0-3)) ) - (vector-flatten! (the-as vector s4-1) (the-as vector s4-1) (-> *camera* local-down)) - (if (< 0.0 (vector-dot (the-as vector s4-1) s5-0)) - (vector-negate! gp-0 (the-as vector s4-1)) + (vector-flatten! s4-1 s4-1 (-> *camera* local-down)) + (if (< 0.0 (vector-dot s4-1 s5-0)) + (vector-negate! gp-0 s4-1) ) ) ) @@ -318,6 +326,8 @@ (none) ) +;; definition for function target-board-resolve-points +;; WARN: Return type mismatch int vs none. (defbehavior target-board-resolve-points target ((arg0 float) (arg1 float) (arg2 float) (arg3 float)) (when (= (-> self board main mode) (joint-mod-mode rotate)) (let ((f0-1 (fabs (-> self board troty-cum)))) @@ -343,150 +353,140 @@ (none) ) +;; definition for function target-board-ground-check +;; INFO: Used lq/sq +;; WARN: Return type mismatch symbol vs none. +;; ERROR: Function may read a register that is not set: a0 +;; ERROR: Function may read a register that is not set: a1 +;; ERROR: Function may read a register that is not set: a2 +;; ERROR: Function may read a register that is not set: a3 (defbehavior target-board-ground-check target () (local-vars (a0-4 object) (a1-0 object) (a2-3 number) (a3-0 number)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when (board-on-ground?) - (when (!= (-> self board troty-cum) 0.0) - (let ((f30-0 (fabs (-> self board troty-cum))) - (f28-0 (vector-y-angle (-> self control transv))) - (f0-2 (y-angle (-> self control))) - ) - (if (< (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) - (set! f28-0 (+ 32768.0 f28-0)) - ) - (let ((t9-3 deg-diff)) - (set! a0-4 f0-2) - (set! a1-0 f28-0) - (let ((f0-5 (fabs (t9-3 (the-as float a0-4) (the-as float a1-0))))) - (when (and (>= f30-0 49152.0) (>= 4551.1113 f0-5)) - (cond - ((>= f30-0 191146.67) - (add-to-trick-list (-> self board) (board-tricks board-boost) 2000.0) - ) - ((>= f30-0 126520.89) - (add-to-trick-list (-> self board) (board-tricks board-boost) 1000.0) - ) - (else - (add-to-trick-list (-> self board) (board-tricks board-boost) 500.0) - ) + (when (board-on-ground?) + (when (!= (-> self board troty-cum) 0.0) + (let ((f30-0 (fabs (-> self board troty-cum))) + (f28-0 (vector-y-angle (-> self control transv))) + (f0-2 (y-angle (-> self control))) + ) + (if (< (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) + (set! f28-0 (+ 32768.0 f28-0)) + ) + (let ((t9-3 deg-diff)) + (set! a0-4 f0-2) + (set! a1-0 f28-0) + (let ((f0-5 (fabs (t9-3 (the-as float a0-4) (the-as float a1-0))))) + (when (and (>= f30-0 49152.0) (>= 4551.1113 f0-5)) + (cond + ((>= f30-0 191146.67) + (add-to-trick-list (-> self board) (board-tricks board-boost) 2000.0) + ) + ((>= f30-0 126520.89) + (add-to-trick-list (-> self board) (board-tricks board-boost) 1000.0) + ) + (else + (add-to-trick-list (-> self board) (board-tricks board-boost) 500.0) ) - (let ((t9-7 lerp-scale) - (a0-8 20480.0) - (a1-4 40960.0) + ) + (let ((t9-7 lerp-scale) + (a0-8 20480.0) + (a1-4 40960.0) + ) + (set! a2-3 f30-0) + (set! a3-0 49152.0) + (let ((f0-8 (t9-7 a0-8 a1-4 (the-as float a2-3) (the-as float a3-0) 182044.44)) + (v1-28 (-> self control transv)) ) - (set! a2-3 f30-0) - (set! a3-0 49152.0) - (let ((f0-8 (t9-7 a0-8 a1-4 (the-as float a2-3) (the-as float a3-0) 182044.44)) - (v1-28 (-> self control transv)) + (set! a0-4 (-> self control transv)) + (set! a1-0 (-> self control unknown-matrix01 vector 2)) + (vector+float*! v1-28 (the-as vector a0-4) (the-as vector a1-0) f0-8) + ) + ) + (when (< (vector-length (-> self control transv)) 114688.0) + (let ((t9-8 vector-normalize!)) + (set! a0-4 (-> self control transv)) + (set! a1-0 114688.0) + (t9-8 (the-as vector a0-4) (the-as float a1-0)) + ) + ) + (when (zero? (logand (-> self control old-status) (cshape-moving-flags on-surface))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control trans quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-0 + (let ((t9-10 (method-of-type part-tracker activate))) + (t9-10 (the-as part-tracker s5-0) self (symbol->string (-> part-tracker symbol)) (the-as pointer #x70004000)) ) - (let ((a0-10 (-> self control transv))) - (set! a1-0 (-> self control unknown-matrix01 vector 2)) - (.lvf vf2 (&-> (the-as vector a1-0) quad)) - (.lvf vf1 (&-> a0-10 quad)) - ) - (set! a0-4 f0-8) - (.mov vf3 a0-4) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-28 quad) vf4) - ) - ) - (when (< (vector-length (-> self control transv)) 114688.0) - (let ((t9-8 vector-normalize!)) - (set! a0-4 (-> self control transv)) - (set! a1-0 114688.0) - (t9-8 (the-as vector a0-4) (the-as float a1-0)) - ) - ) - (when (zero? (logand (-> self control old-status) (cshape-moving-flags on-surface))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control trans quad)) - (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) - (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when s5-0 - (let ((t9-10 (method-of-type part-tracker activate))) - (t9-10 (the-as part-tracker s5-0) self (symbol->string (-> part-tracker symbol)) (the-as pointer #x70004000)) - ) - (let ((t9-11 run-function-in-process) - (a0-13 s5-0) - (a1-8 part-tracker-init) - (a2-8 (-> *part-group-id-table* 119)) - (a3-2 0) - (t0-1 #f) - (t1-0 #f) - (t2-0 #f) - (t3-0 *launch-matrix*) - ) - (set! (-> t3-0 trans quad) (-> gp-0 quad)) - ((the-as (function object object object object object object object object none) t9-11) - a0-13 - a1-8 - a2-8 - a3-2 - t0-1 - t1-0 - t2-0 - t3-0 - ) - ) - (-> s5-0 ppointer) + (let ((t9-11 run-function-in-process) + (a0-12 s5-0) + (a1-8 part-tracker-init) + (a2-8 (-> *part-group-id-table* 119)) + (a3-2 0) + (t0-1 #f) + (t1-0 #f) + (t2-0 #f) + (t3-0 *launch-matrix*) + ) + (set! (-> t3-0 trans quad) (-> gp-0 quad)) + ((the-as (function object object object object object object object object none) t9-11) + a0-12 + a1-8 + a2-8 + a3-2 + t0-1 + t1-0 + t2-0 + t3-0 + ) ) + (-> s5-0 ppointer) ) - (let* ((s4-0 (get-process *default-dead-pool* manipy #x4000)) - (s5-1 - (when s4-0 - (let ((t9-13 (method-of-type manipy activate))) - (t9-13 (the-as manipy s4-0) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) - ) - (let ((s5-2 run-function-in-process) - (s3-0 s4-0) - (s2-0 manipy-init) - (s1-0 (-> self entity)) - (t0-2 (art-group-get-by-name *level* "skel-generic-blast" (the-as (pointer uint32) #f))) - (t1-1 #f) - ) - 0 - ((the-as (function object object object object object object none) s5-2) s3-0 s2-0 gp-0 s1-0 t0-2 t1-1) - ) - (-> s4-0 ppointer) + ) + (let* ((s4-0 (get-process *default-dead-pool* manipy #x4000)) + (s5-1 + (when s4-0 + (let ((t9-13 (method-of-type manipy activate))) + (t9-13 (the-as manipy s4-0) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) ) + (let ((s5-2 run-function-in-process) + (s3-0 s4-0) + (s2-0 manipy-init) + (s1-0 (-> self entity)) + (t0-2 (art-group-get-by-name *level* "skel-generic-blast" (the-as (pointer uint32) #f))) + (t1-1 #f) + ) + 0 + ((the-as (function object object object object object object none) s5-2) s3-0 s2-0 gp-0 s1-0 t0-2 t1-1) + ) + (-> s4-0 ppointer) ) ) - (when s5-1 - (quaternion-copy! (-> (the-as board (-> s5-1 0)) root quat) (-> self control unknown-quaternion00)) - (send-event (ppointer->process s5-1) 'anim-mode 'play1) - (send-event (ppointer->process s5-1) 'anim "idle") - (send-event (ppointer->process s5-1) 'speed #x3fc00000) - (set-vector! (-> (the-as board (-> s5-1 0)) root scale) 0.2 0.4 0.2 1.0) - ) + ) + (when s5-1 + (quaternion-copy! (-> (the-as board (-> s5-1 0)) root quat) (-> self control unknown-quaternion00)) + (send-event (ppointer->process s5-1) 'anim-mode 'play1) + (send-event (ppointer->process s5-1) 'anim "idle") + (send-event (ppointer->process s5-1) 'speed #x3fc00000) + (set-vector! (-> (the-as board (-> s5-1 0)) root scale) 0.2 0.4 0.2 1.0) ) ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) - (let ((gp-1 sound-play-by-name)) - (let ((s5-3 (make-u128 #x74736f (the-as uint #x6f622d6472616f62)))) - (set! a1-0 (new-sound-id)) - (set! a2-3 1024) - (set! a3-0 0) - (set! a0-4 s5-3) - ) - (gp-1 - (the-as sound-name a0-4) - (the-as sound-id a1-0) - (the-as int a2-3) - (the-as int a3-0) - 0 - (sound-group sfx) - #t - ) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) + (let ((gp-1 sound-play-by-name)) + (let ((s5-3 (make-u128 #x74736f (the-as uint #x6f622d6472616f62)))) + (set! a1-0 (new-sound-id)) + (set! a2-3 1024) + (set! a3-0 0) + (set! a0-4 s5-3) + ) + (gp-1 + (the-as sound-name a0-4) + (the-as sound-id a1-0) + (the-as int a2-3) + (the-as int a3-0) + 0 + (sound-group sfx) + #t ) ) ) @@ -494,13 +494,15 @@ ) ) ) - (target-board-resolve-points (the-as float a0-4) (the-as float a1-0) (the-as float a2-3) (the-as float a3-0)) ) - (set! (-> self board turn-anim-tilt?) #t) - (none) + (target-board-resolve-points (the-as float a0-4) (the-as float a1-0) (the-as float a2-3) (the-as float a3-0)) ) + (set! (-> self board turn-anim-tilt?) #t) + (none) ) +;; definition for function target-board-halfpipe-check +;; INFO: Used lq/sq (defbehavior target-board-halfpipe-check target () (local-vars (v0-3 collide-action)) (let ((gp-0 (vector-flatten! @@ -540,6 +542,7 @@ ) ) +;; definition for function target-board-jump-trans (defbehavior target-board-jump-trans target () (when (and (!= (-> self state-time) (-> self clock frame-counter)) (jump-hit-ground-stuck?)) (set! (-> self board jump-land-time) (-> self clock frame-counter)) @@ -562,6 +565,7 @@ (none) ) +;; failed to figure out what this is: (defstate target-board-start (target) :event target-board-handler :exit target-board-exit @@ -574,6 +578,7 @@ :post target-post ) +;; 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 @@ -831,6 +836,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-duck-stance (target) :event (-> target-board-stance event) :enter (behavior () @@ -940,6 +946,7 @@ :post target-board-post ) +;; 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))) @@ -1157,6 +1164,7 @@ :post target-board-post ) +;; 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 @@ -1181,11 +1189,7 @@ (let ((v1-11 (new-stack-vector0))) (let ((f0-2 (vector-dot (-> self control unknown-vector36) (-> self control transv)))) 0.0 - (vector-! - v1-11 - (-> self control transv) - (the-as vector (vector-float*! v1-11 (-> self control unknown-vector36) f0-2)) - ) + (vector-! v1-11 (-> self control transv) (vector-float*! v1-11 (-> self control unknown-vector36) f0-2)) ) (let* ((f0-3 (vector-length v1-11)) (f1-1 f0-3) @@ -1193,8 +1197,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control unknown-vector36) f2-0)) - (the-as vector (vector-float*! v1-11 v1-11 (/ f0-3 f1-1))) + (vector-float*! (-> self control transv) (-> self control unknown-vector36) f2-0) + (vector-float*! v1-11 v1-11 (/ f0-3 f1-1)) ) ) ) @@ -1256,7 +1260,7 @@ (let ((v1-40 (new-stack-vector0))) (let ((f0-5 (vector-dot gp-0 (-> self control transv)))) 0.0 - (vector-! v1-40 (-> self control transv) (the-as vector (vector-float*! v1-40 gp-0 f0-5))) + (vector-! v1-40 (-> self control transv) (vector-float*! v1-40 gp-0 f0-5)) ) (let* ((f0-6 (vector-length v1-40)) (f1-2 f0-6) @@ -1264,8 +1268,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) gp-0 f2-0)) - (the-as vector (vector-float*! v1-40 v1-40 (/ f0-6 f1-2))) + (vector-float*! (-> self control transv) gp-0 f2-0) + (vector-float*! v1-40 v1-40 (/ f0-6 f1-2)) ) ) ) @@ -1316,11 +1320,7 @@ (f0-2 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-16 - (-> self control transv) - (the-as vector (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-2)) - ) + (vector-! v1-16 (-> self control transv) (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-2)) (let* ((f1-4 (vector-length v1-16)) (f2-0 f1-4) ) @@ -1329,8 +1329,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2)) - (the-as vector (vector-float*! v1-16 v1-16 (/ f1-4 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2) + (vector-float*! v1-16 v1-16 (/ f1-4 f2-0)) ) ) ) @@ -1429,6 +1429,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-falling (target) :event target-board-handler :enter (behavior () @@ -1512,6 +1513,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-jump-kick (target) :event target-board-handler :enter (behavior () @@ -1563,6 +1565,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-wall-kick (target) :event target-board-handler :enter (behavior ((arg0 vector) (arg1 float)) @@ -1612,6 +1615,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-flip (target) :event (-> target-board-jump event) :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1794,6 +1798,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-hold (target) :event (-> target-board-jump event) :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1977,7 +1982,7 @@ (vector-! v1-179 (-> self control transv) - (the-as vector (vector-float*! v1-179 (-> self control dynam gravity-normal) f0-48)) + (vector-float*! v1-179 (-> self control dynam gravity-normal) f0-48) ) (let* ((f1-5 (vector-length v1-179)) (f2-2 f1-5) @@ -1987,8 +1992,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-48)) - (the-as vector (vector-float*! v1-179 v1-179 (/ f1-5 f2-2))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-48) + (vector-float*! v1-179 v1-179 (/ f1-5 f2-2)) ) ) ) @@ -1998,6 +2003,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-trickx (target) :event (-> target-board-jump event) :enter (-> target-board-hold enter) @@ -2107,6 +2113,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-hit-ground (target) :event target-board-handler :enter (behavior () @@ -2191,6 +2198,7 @@ :post target-board-post ) +;; failed to figure out what this is: (defstate target-board-turn-to (target) :event target-board-handler :enter (behavior ((arg0 vector) (arg1 time-frame)) @@ -2200,11 +2208,7 @@ (f0-2 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-6 - (-> self control transv) - (the-as vector (vector-float*! v1-6 (-> self control dynam gravity-normal) f0-2)) - ) + (vector-! v1-6 (-> self control transv) (vector-float*! v1-6 (-> self control dynam gravity-normal) f0-2)) (let* ((f1-3 (vector-length v1-6)) (f2-0 f1-3) ) @@ -2213,8 +2217,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2)) - (the-as vector (vector-float*! v1-6 v1-6 (/ f1-3 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2) + (vector-float*! v1-6 v1-6 (/ f1-3 f2-0)) ) ) ) @@ -2263,6 +2267,7 @@ :post target-board-post ) +;; 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 @@ -2385,128 +2390,106 @@ (none) ) :trans (behavior () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? 'board) - ) - (let ((v1-15 (/ (- (-> self clock frame-counter) (-> self board ride-start-time)) 300))) - (if (> v1-15 0) - (add-to-trick-list (-> self board) (board-tricks board-rail) (* 100.0 (the float v1-15))) - ) - ) - (set! (-> self control trans y) (+ 1228.8 (-> self control trans y))) - (go - target-board-jump - (-> *TARGET_BOARD-bank* jump-height-min) - (-> *TARGET_BOARD-bank* jump-height-max) - (the-as symbol *board-ride-jump-mods*) - ) - ) - (if (cpad-pressed? (-> self control unknown-cpad-info00 number) circle square) - (set! (-> self control unknown-word04) (the-as uint #f)) - ) - (if (-> self control unknown-spool-anim00) - (set! (-> self board ride-button-time) (-> self clock frame-counter)) - ) - (set! (-> self board turn-anim-targ) (* (-> self board ride-lean) (- (-> *TARGET_BOARD-bank* turn-frames)))) - (cond - ((= (-> self board ride-speed) 0.0) - (let ((v1-43 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> v1-43 command) (sound-command set-param)) - (set! (-> v1-43 id) (the-as sound-id (-> self board ride-sound-id))) - (set! (-> v1-43 params volume) -4) - (set! (-> v1-43 auto-time) 24) - (set! (-> v1-43 auto-from) 2) - (set! (-> v1-43 params mask) (the-as uint 17)) - (-> v1-43 id) - ) - ) - (else - (let ((f30-1 - (* (lerp-scale 0.7 1.0 (fabs (-> self board ride-lean)) 0.0 1.0) - (lerp-scale - 0.8 - 1.0 - (fabs (-> self board ride-speed)) - 0.0 - (* 0.5 (-> self control unknown-surface00 transv-max)) - ) - ) - ) - (f0-23 - (+ (lerp-scale 0.0 0.05 (fabs (-> self board ride-lean)) 0.0 1.0) - (lerp-scale - -0.05 - 0.0 - (fabs (-> self board ride-speed)) - 0.0 - (* 0.3 (-> self control unknown-surface00 transv-max)) - ) - ) - ) - ) - (sound-play-by-name - (static-sound-name "board-rail") - (the-as sound-id (-> self board ride-sound-id)) - (the int (* 1024.0 f30-1)) - (the int (* 1524.0 f0-23)) - 0 - (sound-group sfx) - #t - ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? 'board) + ) + (let ((v1-15 (/ (- (-> self clock frame-counter) (-> self board ride-start-time)) 300))) + (if (> v1-15 0) + (add-to-trick-list (-> self board) (board-tricks board-rail) (* 100.0 (the float v1-15))) ) - ) ) - (when (< 4096.0 (-> self board ride-speed)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((v1-63 (-> self control trans)) - (a0-40 (-> self board ride-dir)) - (f0-27 -4096.0) - ) - (.lvf vf2 (&-> a0-40 quad)) - (.lvf vf1 (&-> v1-63 quad)) - (let ((v1-64 f0-27)) - (.mov vf3 v1-64) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> gp-0 quad) vf4) - (set! (-> *part-id-table* 431 init-specs 1 initial-valuef) - (lerp-scale - 0.1 - 2.0 - (fabs (-> self board ride-speed)) - 0.0 - (* 0.3 (-> self control unknown-surface00 transv-max)) - ) - ) - (let ((t9-10 sp-launch-particles-var) - (a0-42 *sp-particle-system-2d*) - (a1-12 (-> *part-id-table* 431)) - (a2-9 *launch-matrix*) - ) - (set! (-> a2-9 trans quad) (-> gp-0 quad)) - (t9-10 a0-42 a1-12 a2-9 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) - ) - ) + (set! (-> self control trans y) (+ 1228.8 (-> self control trans y))) + (go + target-board-jump + (-> *TARGET_BOARD-bank* jump-height-min) + (-> *TARGET_BOARD-bank* jump-height-max) + (the-as symbol *board-ride-jump-mods*) ) - (none) ) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) circle square) + (set! (-> self control unknown-word04) (the-as uint #f)) + ) + (if (-> self control unknown-spool-anim00) + (set! (-> self board ride-button-time) (-> self clock frame-counter)) + ) + (set! (-> self board turn-anim-targ) (* (-> self board ride-lean) (- (-> *TARGET_BOARD-bank* turn-frames)))) + (cond + ((= (-> self board ride-speed) 0.0) + (let ((v1-43 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> v1-43 command) (sound-command set-param)) + (set! (-> v1-43 id) (the-as sound-id (-> self board ride-sound-id))) + (set! (-> v1-43 params volume) -4) + (set! (-> v1-43 auto-time) 24) + (set! (-> v1-43 auto-from) 2) + (set! (-> v1-43 params mask) (the-as uint 17)) + (-> v1-43 id) + ) + ) + (else + (let ((f30-1 + (* (lerp-scale 0.7 1.0 (fabs (-> self board ride-lean)) 0.0 1.0) + (lerp-scale + 0.8 + 1.0 + (fabs (-> self board ride-speed)) + 0.0 + (* 0.5 (-> self control unknown-surface00 transv-max)) + ) + ) + ) + (f0-23 + (+ (lerp-scale 0.0 0.05 (fabs (-> self board ride-lean)) 0.0 1.0) + (lerp-scale + -0.05 + 0.0 + (fabs (-> self board ride-speed)) + 0.0 + (* 0.3 (-> self control unknown-surface00 transv-max)) + ) + ) + ) + ) + (sound-play-by-name + (static-sound-name "board-rail") + (the-as sound-id (-> self board ride-sound-id)) + (the int (* 1024.0 f30-1)) + (the int (* 1524.0 f0-23)) + 0 + (sound-group sfx) + #t + ) + ) + ) + ) + (when (< 4096.0 (-> self board ride-speed)) + (let ((gp-1 (vector+float*! (new 'stack-no-clear 'vector) (-> self control trans) (-> self board ride-dir) -4096.0)) + ) + (set! (-> *part-id-table* 431 init-specs 1 initial-valuef) + (lerp-scale + 0.1 + 2.0 + (fabs (-> self board ride-speed)) + 0.0 + (* 0.3 (-> self control unknown-surface00 transv-max)) + ) + ) + (let ((t9-10 sp-launch-particles-var) + (a0-42 *sp-particle-system-2d*) + (a1-12 (-> *part-id-table* 431)) + (a2-9 *launch-matrix*) + ) + (set! (-> a2-9 trans quad) (-> gp-1 quad)) + (t9-10 a0-42 a1-12 a2-9 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (none) ) :code (behavior ((arg0 symbol) (arg1 object) (arg2 object) (arg3 float)) (let* ((v1-1 (-> self board ride-mode)) @@ -2558,6 +2541,7 @@ ) ) +;; 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 @@ -2580,11 +2564,7 @@ (f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-12 - (-> self control transv) - (the-as vector (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-1)) - ) + (vector-! v1-12 (-> self control transv) (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-1)) (let* ((f1-2 (vector-length v1-12)) (f2-0 f1-2) ) @@ -2593,8 +2573,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-1)) - (the-as vector (vector-float*! v1-12 v1-12 (/ f1-2 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-1) + (vector-float*! v1-12 v1-12 (/ f1-2 f2-0)) ) ) ) @@ -2606,47 +2586,28 @@ (none) ) :trans (behavior () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (set! (-> self board halfpipe-time) (-> self clock frame-counter)) - (if (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) - (set! (-> self board halfpipe-gspot-time) (-> self clock frame-counter)) - ) - (when (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 1)) - (let ((v1-11 (-> self control transv))) - (let ((a0-8 (-> self control transv)) - (a1-2 (-> self control dynam gravity-normal)) - (f0-1 (* 122880.0 (-> self clock seconds-per-frame))) - ) - (.lvf vf2 (&-> a1-2 quad)) - (.lvf vf1 (&-> a0-8 quad)) - (let ((a0-9 f0-1)) - (.mov vf3 a0-9) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-11 quad) vf4) + (set! (-> self board halfpipe-time) (-> self clock frame-counter)) + (if (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) + (set! (-> self board halfpipe-gspot-time) (-> self clock frame-counter)) + ) + (if (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 1)) + (vector+float*! + (-> self control transv) + (-> self control transv) + (-> self control dynam gravity-normal) + (* 122880.0 (-> self clock seconds-per-frame)) ) ) - (when (jump-hit-ground-stuck?) - (vector-float*! (-> self control transv) (-> self control transv) 1.5) - (go target-board-turn-to (-> self control transv) (seconds 0.5)) - ) - (when (>= (- (-> self clock frame-counter) (-> self board halfpipe-gspot-time)) (seconds 0.5)) - (+! (-> self control transv x) (* 20480.0 (-> self control unknown-vector36 x))) - (+! (-> self control transv z) (* 20480.0 (-> self control unknown-vector36 z))) - (go target-board-stance) - ) - (none) + (when (jump-hit-ground-stuck?) + (vector-float*! (-> self control transv) (-> self control transv) 1.5) + (go target-board-turn-to (-> self control transv) (seconds 0.5)) ) + (when (>= (- (-> self clock frame-counter) (-> self board halfpipe-gspot-time)) (seconds 0.5)) + (+! (-> self control transv x) (* 20480.0 (-> self control unknown-vector36 x))) + (+! (-> self control transv z) (* 20480.0 (-> self control unknown-vector36 z))) + (go target-board-stance) + ) + (none) ) :code (behavior ((arg0 handle)) (ja-channel-push! 1 (seconds 0.05)) @@ -2691,6 +2652,7 @@ :post target-board-post ) +;; 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 @@ -2720,11 +2682,7 @@ (let ((v1-10 (new-stack-vector0))) (let ((f0-2 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-10 - (-> self control transv) - (the-as vector (vector-float*! v1-10 (-> self control dynam gravity-normal) f0-2)) - ) + (vector-! v1-10 (-> self control transv) (vector-float*! v1-10 (-> self control dynam gravity-normal) f0-2)) ) (let* ((f0-3 (vector-length v1-10)) (f1-1 f0-3) @@ -2736,8 +2694,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2)) - (the-as vector (vector-float*! v1-10 v1-10 (/ f0-3 f1-1))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! v1-10 v1-10 (/ f0-3 f1-1)) ) ) ) @@ -2747,11 +2705,7 @@ (let ((v1-12 (new-stack-vector0))) (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-12 - (-> self control transv) - (the-as vector (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-6)) - ) + (vector-! v1-12 (-> self control transv) (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-6)) ) (let* ((f0-7 (vector-length v1-12)) (f1-3 f0-7) @@ -2763,8 +2717,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-5)) - (the-as vector (vector-float*! v1-12 v1-12 (/ f0-7 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-5) + (vector-float*! v1-12 v1-12 (/ f0-7 f1-3)) ) ) ) @@ -2774,11 +2728,7 @@ (let ((v1-14 (new-stack-vector0))) (let ((f0-10 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-14 - (-> self control transv) - (the-as vector (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-10)) - ) + (vector-! v1-14 (-> self control transv) (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-10)) ) (let* ((f0-11 (vector-length v1-14)) (f1-5 f0-11) @@ -2786,8 +2736,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7)) - (the-as vector (vector-float*! v1-14 v1-14 (/ f0-11 f1-5))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7) + (vector-float*! v1-14 v1-14 (/ f0-11 f1-5)) ) ) ) @@ -2799,11 +2749,7 @@ (f0-14 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-17 - (-> self control transv) - (the-as vector (vector-float*! v1-17 (-> self control dynam gravity-normal) f0-14)) - ) + (vector-! v1-17 (-> self control transv) (vector-float*! v1-17 (-> self control dynam gravity-normal) f0-14)) (let* ((f2-8 (vector-length v1-17)) (f1-8 f2-8) ) @@ -2812,8 +2758,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-14)) - (the-as vector (vector-float*! v1-17 v1-17 (/ f2-8 f1-8))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-14) + (vector-float*! v1-17 v1-17 (/ f2-8 f1-8)) ) ) ) @@ -2864,6 +2810,7 @@ :post target-board-post ) +;; 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 @@ -2967,6 +2914,7 @@ ) ) +;; failed to figure out what this is: (defstate target-board-get-off (target) :event (-> target-board-get-on event) :enter (behavior ((arg0 object) (arg1 symbol)) @@ -3018,11 +2966,7 @@ (let ((v1-16 (new-stack-vector0))) (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-16 - (-> self control transv) - (the-as vector (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-3)) - ) + (vector-! v1-16 (-> self control transv) (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-3)) ) (let* ((f0-4 (vector-length v1-16)) (f1-1 f0-4) @@ -3034,8 +2978,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2)) - (the-as vector (vector-float*! v1-16 v1-16 (/ f0-4 f1-1))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! v1-16 v1-16 (/ f0-4 f1-1)) ) ) ) @@ -3045,11 +2989,7 @@ (let ((v1-18 (new-stack-vector0))) (let ((f0-7 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-18 - (-> self control transv) - (the-as vector (vector-float*! v1-18 (-> self control dynam gravity-normal) f0-7)) - ) + (vector-! v1-18 (-> self control transv) (vector-float*! v1-18 (-> self control dynam gravity-normal) f0-7)) ) (let* ((f0-8 (vector-length v1-18)) (f1-3 f0-8) @@ -3057,8 +2997,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-4)) - (the-as vector (vector-float*! v1-18 v1-18 (/ f0-8 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-4) + (vector-float*! v1-18 v1-18 (/ f0-8 f1-3)) ) ) ) @@ -3173,6 +3113,7 @@ ) ) +;; failed to figure out what this is: (defstate target-board-grab (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (cond @@ -3237,34 +3178,36 @@ :post target-board-post ) -;; (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)) -;; (set! (-> self control unknown-word04) (the-as uint #f)) -;; ) -;; ((-> target-board-grab event) arg0 arg1 arg2 arg3) -;; ) -;; :enter (-> target-clone-anim enter) -;; :exit (behavior () -;; (set! (-> self control unknown-vector04 y) (the-as float (-> self control unknown-word04))) -;; (set! (-> self control unknown-vector05 y) (-> self control unknown-vector04 y)) -;; (send-event (ppointer->process (-> self sidekick)) 'matrix 'board) -;; ((-> target-clone-anim exit)) -;; ((-> target-board-start exit)) -;; (vector-reset! (-> self control transv)) -;; (none) -;; ) -;; :code (behavior ((arg0 handle)) -;; (set! (-> self control unknown-word04) (the-as uint (-> self control unknown-vector04 y))) -;; (set! (-> self control unknown-vector04 y) 0.0) -;; (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) -;; (clone-anim arg0 #t "") -;; (go target-board-stance) -;; (none) -;; ) -;; :post target-no-ja-move-post -;; ) +;; 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)) +; (set! (-> self control unknown-word04) (the-as uint #f)) +; ) +; ((-> target-board-grab event) arg0 arg1 arg2 arg3) +; ) +; :enter (-> target-clone-anim enter) +; :exit (behavior () +; (set! (-> self control unknown-vector04 y) (the-as float (-> self control unknown-word04))) +; (set! (-> self control unknown-vector05 y) (-> self control unknown-vector04 y)) +; (send-event (ppointer->process (-> self sidekick)) 'matrix 'board) +; ((-> target-clone-anim exit)) +; ((-> target-board-start exit)) +; (vector-reset! (-> self control transv)) +; (none) +; ) +; :code (behavior ((arg0 handle)) +; (set! (-> self control unknown-word04) (the-as uint (-> self control unknown-vector04 y))) +; (set! (-> self control unknown-vector04 y) 0.0) +; (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) +; (clone-anim arg0 #t "") +; (go target-board-stance) +; (none) +; ) +; :post target-no-ja-move-post +; ) +;; failed to figure out what this is: (defstate target-board-hit (target) :event target-board-handler :exit (behavior () @@ -3462,4 +3405,4 @@ (target-board-joint-points) (none) ) - ) \ No newline at end of file + ) diff --git a/goal_src/jak2/engine/target/board/target-board.gc b/goal_src/jak2/engine/target/board/target-board.gc index 7e0656f0e9..2ccdf33116 100644 --- a/goal_src/jak2/engine/target/board/target-board.gc +++ b/goal_src/jak2/engine/target/board/target-board.gc @@ -52,7 +52,7 @@ (define-extern target-board-clone-anim (state handle target)) (define-extern target-board-hit (state vector target)) -;; DECOMP BEGINS +;; definition for symbol *board-walk-mods*, type surface (define *board-walk-mods* (new 'static 'surface :name 'run @@ -144,6 +144,7 @@ ) ) +;; definition for symbol *board-duck-mods*, type surface (define *board-duck-mods* (new 'static 'surface :name 'duck :turnv 21845.334 @@ -177,8 +178,10 @@ ) ) +;; failed to figure out what this is: (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 @@ -213,6 +216,7 @@ ) ) +;; definition for symbol *board-jump-mods*, type surface (define *board-jump-mods* (new 'static 'surface :name 'jump :turnv 49152.0 @@ -241,6 +245,7 @@ ) ) +;; definition for symbol *board-ride-jump-mods*, type surface (define *board-ride-jump-mods* (new 'static 'surface :name 'jump @@ -265,48 +270,32 @@ :tiltvvf 18.0 :mult-hook (lambda :behavior target ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (case arg3 - ((1) - (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (let* ((f30-0 (* 122880.0 (-> self control unknown-float10) (-> self clock seconds-per-frame))) - (a2-1 (-> self board ride-dir)) - (v1-12 (vector-flatten! (new 'stack-no-clear 'vector) (-> self control unknown-vector08) a2-1)) - (v0-3 (-> self control transv)) - ) - (let ((a0-6 (-> self control transv))) - (.lvf vf2 (&-> v1-12 quad)) - (.lvf vf1 (&-> a0-6 quad)) - ) - (let ((v1-13 f30-0)) - (.mov vf3 v1-13) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v0-3 quad) vf4) - ) + (case arg3 + ((1) + (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (let* ((f30-0 (* 122880.0 (-> self control unknown-float10) (-> self clock seconds-per-frame))) + (a2-1 (-> self board ride-dir)) + (v1-12 (vector-flatten! (new 'stack-no-clear 'vector) (-> self control unknown-vector08) a2-1)) + ) + (vector+float*! (-> self control transv) (-> self control transv) v1-12 f30-0) ) ) - ) - (none) + ) ) + (none) ) :mode 'air :flags (surface-flag no-turn-around turn-to-pad check-edge air) ) ) +;; definition for symbol *board-duck-jump-mods*, type surface (define *board-duck-jump-mods* *board-jump-mods*) + +;; definition for symbol *board-spin-mods*, type surface (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)) @@ -320,6 +309,7 @@ (set! (-> v1-10 tiltvf) 0.0) ) +;; failed to figure out what this is: (let ((v1-12 (copy *board-jump-mods* 'global))) (set! (-> v1-12 seek0) 0.0) (set! (-> v1-12 seek90) 0.0) @@ -328,6 +318,7 @@ (set! *board-spin-post-mods* v1-12) ) +;; failed to figure out what this is: (let ((v1-14 (copy *board-duck-jump-mods* 'global))) (set! (-> v1-14 flags) (surface-flag no-turn-around turn-to-vel air)) (set! (-> v1-14 seek0) 0.0) @@ -341,6 +332,7 @@ (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 @@ -379,6 +371,7 @@ ) ) +;; definition for symbol *board-halfpipe-mods*, type surface (define *board-halfpipe-mods* (new 'static 'surface :name 'jump :turnv 131072.0 @@ -406,6 +399,7 @@ ) ) +;; definition for symbol *board-turn-to-mods*, type surface (define *board-turn-to-mods* (new 'static 'surface :name 'run :turnv 524288.0 @@ -437,8 +431,10 @@ ) ) +;; failed to figure out what this is: (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 @@ -480,6 +476,7 @@ ) ) +;; 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) @@ -513,6 +510,11 @@ ) ) +;; definition for function target-board-handler +;; ERROR: function was not converted to expressions. Cannot decompile. + +;; definition for function target-board-setup +;; WARN: Return type mismatch int vs none. (defbehavior target-board-setup target ((arg0 symbol)) (when (zero? (-> self board)) (set! (-> self board) (new 'process 'board-info)) @@ -548,6 +550,7 @@ (none) ) +;; definition for function target-board-init (defbehavior target-board-init target () (target-gun-end-mode #f) (target-exit) @@ -640,6 +643,8 @@ (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))) @@ -708,6 +713,8 @@ (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 @@ -726,10 +733,13 @@ (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)) @@ -746,6 +756,9 @@ ) ) +;; 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) @@ -878,6 +891,7 @@ (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) @@ -895,43 +909,28 @@ ) ) +;; definition for function segment-array-index->vector (defun segment-array-index->vector ((arg0 (inline-array vector)) (arg1 int) (arg2 float) (arg3 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v0-0 (the int arg2))) - (let* ((f0-2 arg2) - (f0-4 (- f0-2 (the float (the int f0-2)))) - ) - (when (>= v0-0 arg1) - (set! v0-0 (+ arg1 -1)) - (set! f0-4 (- arg2 (the float v0-0))) - ) - (let ((v1-5 (-> arg0 v0-0)) - (a1-3 (-> arg0 (+ v0-0 1))) - (a1-4 arg3) - ) - (.lvf vf2 (&-> (vector-! (new 'stack-no-clear 'vector) a1-3 v1-5) quad)) - (.lvf vf1 (&-> v1-5 quad)) - (let ((v1-6 f0-4)) - (.mov vf3 v1-6) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a1-4 quad) vf4) - ) + (let ((v0-0 (the int arg2))) + (let* ((f0-2 arg2) + (f0-4 (- f0-2 (the float (the int f0-2)))) + ) + (when (>= v0-0 arg1) + (set! v0-0 (+ arg1 -1)) + (set! f0-4 (- arg2 (the float v0-0))) + ) + (let ((v1-5 (-> arg0 v0-0)) + (a1-3 (-> arg0 (+ v0-0 1))) + ) + (vector+float*! arg3 v1-5 (vector-! (new 'stack-no-clear 'vector) a1-3 v1-5) f0-4) ) - v0-0 ) + v0-0 ) ) +;; 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) @@ -956,6 +955,8 @@ (none) ) +;; definition for function target-board-effect +;; WARN: Return type mismatch int vs none. (defbehavior target-board-effect target () (let ((gp-0 0)) (cond @@ -1118,6 +1119,9 @@ (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)) @@ -1228,165 +1232,155 @@ (none) ) +;; definition for function target-board-collision +;; INFO: Used lq/sq +;; WARN: Return type mismatch int vs none. (defbehavior target-board-collision target () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control transv quad)) - (when (logtest? (focus-status halfpipe) (-> self focus-status)) - (when (-> self control unknown-spool-anim00) - *edge-grab-info* - (let ((v1-9 (new-stack-vector0)) - (f0-1 (vector-dot (-> self control unknown-vector36) (-> self control transv))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control transv quad)) + (when (logtest? (focus-status halfpipe) (-> self focus-status)) + (when (-> self control unknown-spool-anim00) + *edge-grab-info* + (let ((v1-9 (new-stack-vector0)) + (f0-1 (vector-dot (-> self control unknown-vector36) (-> self control transv))) + ) + 0.0 + (vector-! v1-9 (-> self control transv) (vector-float*! v1-9 (-> self control unknown-vector36) f0-1)) + (let* ((f1-2 (vector-length v1-9)) + (f2-0 f1-2) + ) + (if (< 0.0 f0-1) + (set! f0-1 -2048.0) ) - 0.0 - (vector-! - v1-9 + (vector+! (-> self control transv) - (the-as vector (vector-float*! v1-9 (-> self control unknown-vector36) f0-1)) - ) - (let* ((f1-2 (vector-length v1-9)) - (f2-0 f1-2) - ) - (if (< 0.0 f0-1) - (set! f0-1 -2048.0) - ) - (vector+! - (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control unknown-vector36) f0-1)) - (the-as vector (vector-float*! v1-9 v1-9 (/ f1-2 f2-0))) - ) + (vector-float*! (-> self control transv) (-> self control unknown-vector36) f0-1) + (vector-float*! v1-9 v1-9 (/ f1-2 f2-0)) ) ) ) ) - (when *debug-segment* - (let ((s5-0 (-> *display* frames (-> *display* on-screen) profile-array data 0)) - (v1-17 'target) - (s4-0 *profile-target-color*) - ) - (when (and *dproc* *debug-segment*) - (let ((s3-0 (-> s5-0 data (-> s5-0 count)))) - (let ((s2-0 (-> s5-0 base-time))) - (set! (-> s3-0 name) v1-17) - (set! (-> s3-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s2-0)))) - ) - (set! (-> s3-0 depth) (the-as uint (-> s5-0 depth))) - (set! (-> s3-0 color) s4-0) - (set! (-> s5-0 segment (-> s5-0 depth)) s3-0) - ) - (+! (-> s5-0 count) 1) - (+! (-> s5-0 depth) 1) - (set! (-> s5-0 max-depth) (max (-> s5-0 max-depth) (-> s5-0 depth))) + ) + (when *debug-segment* + (let ((s5-0 (-> *display* frames (-> *display* on-screen) profile-array data 0)) + (v1-17 'target) + (s4-0 *profile-target-color*) ) + (when (and *dproc* *debug-segment*) + (let ((s3-0 (-> s5-0 data (-> s5-0 count)))) + (let ((s2-0 (-> s5-0 base-time))) + (set! (-> s3-0 name) v1-17) + (set! (-> s3-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s2-0)))) + ) + (set! (-> s3-0 depth) (the-as uint (-> s5-0 depth))) + (set! (-> s3-0 color) s4-0) + (set! (-> s5-0 segment (-> s5-0 depth)) s3-0) + ) + (+! (-> s5-0 count) 1) + (+! (-> s5-0 depth) 1) + (set! (-> s5-0 max-depth) (max (-> s5-0 max-depth) (-> s5-0 depth))) ) - 0 ) - (let ((a2-6 (new 'stack-no-clear 'collide-query)) - (v1-30 (-> self control)) - ) - (set! (-> a2-6 collide-with) (-> v1-30 root-prim prim-core collide-with)) - (set! (-> a2-6 ignore-process0) self) - (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)) - ) - (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))) - (set! (-> *collide-edge-board-spec* touching-segment) #f) - (target-method-27 *target* *collide-cache* *collide-edge-board-spec*) - ) - (when *debug-segment* - (let ((s5-1 (-> *display* frames (-> *display* on-screen) profile-array data 0))) - (when (and *dproc* *debug-segment*) - (let* ((v1-53 (+ (-> s5-1 depth) -1)) - (s4-1 (-> s5-1 segment v1-53)) - (s3-1 (-> s5-1 base-time)) - ) - (when (>= v1-53 0) - (set! (-> s4-1 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-1)))) - (+! (-> s5-1 depth) -1) - ) + 0 + ) + (let ((a2-6 (new 'stack-no-clear 'collide-query)) + (v1-30 (-> self control)) + ) + (set! (-> a2-6 collide-with) (-> v1-30 root-prim prim-core collide-with)) + (set! (-> a2-6 ignore-process0) self) + (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)) + ) + (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))) + (set! (-> *collide-edge-board-spec* touching-segment) #f) + (target-method-27 *target* *collide-cache* *collide-edge-board-spec*) + ) + (when *debug-segment* + (let ((s5-1 (-> *display* frames (-> *display* on-screen) profile-array data 0))) + (when (and *dproc* *debug-segment*) + (let* ((v1-53 (+ (-> s5-1 depth) -1)) + (s4-1 (-> s5-1 segment v1-53)) + (s3-1 (-> s5-1 base-time)) + ) + (when (>= v1-53 0) + (set! (-> s4-1 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-1)))) + (+! (-> s5-1 depth) -1) ) ) ) - 0 ) - (target-board-physics gp-0) - (deg-diff (vector-y-angle gp-0) (vector-y-angle (-> self control transv))) - (let* ((v1-60 gp-0) - (f30-0 (sqrtf (+ (* (-> v1-60 x) (-> v1-60 x)) (* (-> v1-60 z) (-> v1-60 z))))) - ) - (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))) - (!= (-> self control ground-pat mode) 3) - (>= (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) - ) - ) - (let ((s5-3 (new 'stack-no-clear 'vector))) - (set! (-> s5-3 quad) (-> self control unknown-vector25 quad)) - (vector-normalize! s5-3 1.0) - (let ((s3-2 (vector-reflect! (new 'stack-no-clear 'vector) gp-0 s5-3)) - (s4-3 (new 'stack-no-clear 'vector)) - ) - (set! (-> s4-3 quad) (-> self control unknown-matrix01 vector 2 quad)) - (set! (-> s3-2 y) 0.0) - (vector-normalize! s3-2 1.0) - (set! (-> s4-3 y) 0.0) - (vector-normalize! s4-3 1.0) - (let ((f0-11 (y-angle (-> self control)))) - (deg-diff f0-11 (vector-y-angle s3-2)) - ) - (let ((s2-2 - (vector-matrix*! (new 'stack-no-clear 'vector) (-> self control transv) (-> self control unknown-matrix00)) + 0 + ) + (target-board-physics gp-0) + (deg-diff (vector-y-angle gp-0) (vector-y-angle (-> self control transv))) + (let* ((v1-60 gp-0) + (f30-0 (sqrtf (+ (* (-> v1-60 x) (-> v1-60 x)) (* (-> v1-60 z) (-> v1-60 z))))) + ) + (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))) + (!= (-> self control ground-pat mode) 3) + (>= (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) ) - (s3-3 (vector-matrix*! (new 'stack-no-clear 'vector) s3-2 (-> self control unknown-matrix00))) + ) + (let ((s5-3 (new 'stack-no-clear 'vector))) + (set! (-> s5-3 quad) (-> self control unknown-vector25 quad)) + (vector-normalize! s5-3 1.0) + (let ((s3-2 (vector-reflect! (new 'stack-no-clear 'vector) gp-0 s5-3)) + (s4-3 (new 'stack-no-clear 'vector)) + ) + (set! (-> s4-3 quad) (-> self control unknown-matrix01 vector 2 quad)) + (set! (-> s3-2 y) 0.0) + (vector-normalize! s3-2 1.0) + (set! (-> s4-3 y) 0.0) + (vector-normalize! s4-3 1.0) + (let ((f0-11 (y-angle (-> self control)))) + (deg-diff f0-11 (vector-y-angle s3-2)) + ) + (let ((s2-2 + (vector-matrix*! (new 'stack-no-clear 'vector) (-> self control transv) (-> self control unknown-matrix00)) ) - (logior! (-> self control status) (cshape-moving-flags csmf15)) - (set! (-> self board glance-time) (-> self clock frame-counter)) - (let ((v1-99 s2-2)) - (set! (-> self board glance-speed) (sqrtf (+ (* (-> v1-99 x) (-> v1-99 x)) (* (-> v1-99 z) (-> v1-99 z))))) + (s3-3 (vector-matrix*! (new 'stack-no-clear 'vector) s3-2 (-> self control unknown-matrix00))) ) - (set! (-> self board glance-normal quad) (-> s5-3 quad)) - (set! (-> self board glance-in-transv quad) (-> gp-0 quad)) - (set! (-> s3-3 y) (-> s2-2 y)) - (vector-xz-normalize! s3-3 (-> self board glance-speed)) - (vector-matrix*! (-> self control transv) s3-3 (-> self control unknown-matrix01)) + (logior! (-> self control status) (cshape-moving-flags csmf15)) + (set! (-> self board glance-time) (-> self clock frame-counter)) + (let ((v1-99 s2-2)) + (set! (-> self board glance-speed) (sqrtf (+ (* (-> v1-99 x) (-> v1-99 x)) (* (-> v1-99 z) (-> v1-99 z))))) ) - (set! (-> self board glance-out-transv quad) (-> self control transv quad)) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) - (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) - ) - (when (and (< (vector-dot s4-3 s5-3) -0.77) (zero? (logand (-> self focus-status) (focus-status dead hit)))) - (cond - ((not (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) - (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) - ) - ) - (if (< 32768.0 f30-0) - (sound-play "board-glance") - ) - (go target-board-turn-to (-> self control transv) (seconds 0.2)) - ) - (else - (set! (-> self control unknown-time-frame00) - (the-as - time-frame - (max (+ (-> self clock frame-counter) (seconds 0.1)) (-> self control unknown-time-frame00)) - ) + (set! (-> self board glance-normal quad) (-> s5-3 quad)) + (set! (-> self board glance-in-transv quad) (-> gp-0 quad)) + (set! (-> s3-3 y) (-> s2-2 y)) + (vector-xz-normalize! s3-3 (-> self board glance-speed)) + (vector-matrix*! (-> self control transv) s3-3 (-> self control unknown-matrix01)) + ) + (set! (-> self board glance-out-transv quad) (-> self control transv quad)) + (forward-up-nopitch->quaternion + (-> self control dir-targ) + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + ) + (when (and (< (vector-dot s4-3 s5-3) -0.77) (zero? (logand (-> self focus-status) (focus-status dead hit)))) + (cond + ((not (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) + (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) + ) + ) + (if (< 32768.0 f30-0) + (sound-play "board-glance") + ) + (go target-board-turn-to (-> self control transv) (seconds 0.2)) + ) + (else + (set! (-> self control unknown-time-frame00) + (the-as + time-frame + (max (+ (-> self clock frame-counter) (seconds 0.1)) (-> self control unknown-time-frame00)) ) - ) + ) ) ) ) @@ -1394,72 +1388,50 @@ ) ) ) - (let ((gp-3 (new 'stack-no-clear 'collide-query))) - (let ((v1-138 gp-3)) - (set! (-> v1-138 radius) 1638.4) - (set! (-> v1-138 collide-with) - (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) - ) - (set! (-> v1-138 ignore-process0) self) - (set! (-> v1-138 ignore-process1) #f) - (set! (-> v1-138 ignore-pat) (-> self control pat-ignore-mask)) - (set! (-> v1-138 action-mask) (collide-action solid)) - ) - (let ((v1-139 (-> gp-3 start-pos))) - (let ((a0-87 (-> self control trans)) - (a1-30 (-> self control unknown-matrix01 vector 2)) - (f0-24 10240.0) - ) - (.lvf vf2 (&-> a1-30 quad)) - (.lvf vf1 (&-> a0-87 quad)) - (let ((a0-88 f0-24)) - (.mov vf3 a0-88) + ) + (let ((gp-3 (new 'stack-no-clear 'collide-query))) + (let ((v1-138 gp-3)) + (set! (-> v1-138 radius) 1638.4) + (set! (-> v1-138 collide-with) + (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-139 quad) vf4) - ) - (let ((v1-140 (-> gp-3 start-pos))) - (let ((a0-89 (-> gp-3 start-pos)) - (a1-33 (-> self control dynam gravity-normal)) - (f0-25 8192.0) - ) - (.lvf vf2 (&-> a1-33 quad)) - (.lvf vf1 (&-> a0-89 quad)) - (let ((a0-90 f0-25)) - (.mov vf3 a0-90) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-140 quad) vf4) - ) - (vector-float*! (-> gp-3 move-dist) (-> self control dynam gravity-normal) -49152.0) - (cond - ((>= (fill-and-probe-using-line-sphere *collide-cache* gp-3) 0.0) - (set! (-> self board unknown-vector00 quad) (-> gp-3 best-other-tri intersect quad)) - (set! (-> self board unknown-vector01 quad) (-> gp-3 best-other-tri normal quad)) - (set! (-> self board unknown-int00) (the-as uint (-> gp-3 best-other-tri pat))) - (set! (-> self board unknown-symbol00) #t) - ) - (else - (set! (-> self board unknown-symbol00) #f) - ) + (set! (-> v1-138 ignore-process0) self) + (set! (-> v1-138 ignore-process1) #f) + (set! (-> v1-138 ignore-pat) (-> self control pat-ignore-mask)) + (set! (-> v1-138 action-mask) (collide-action solid)) + ) + (vector+float*! + (-> gp-3 start-pos) + (-> self control trans) + (-> self control unknown-matrix01 vector 2) + 10240.0 + ) + (vector+float*! (-> gp-3 start-pos) (-> gp-3 start-pos) (-> self control dynam gravity-normal) 8192.0) + (vector-float*! (-> gp-3 move-dist) (-> self control dynam gravity-normal) -49152.0) + (cond + ((>= (fill-and-probe-using-line-sphere *collide-cache* gp-3) 0.0) + (set! (-> self board unknown-vector00 quad) (-> gp-3 best-other-tri intersect quad)) + (set! (-> self board unknown-vector01 quad) (-> gp-3 best-other-tri normal quad)) + (set! (-> self board unknown-int00) (the-as uint (-> gp-3 best-other-tri pat))) + (set! (-> self board unknown-symbol00) #t) + ) + (else + (set! (-> self board unknown-symbol00) #f) ) ) - (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) - (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - (set! (-> self control unknown-time-frame14) (-> self clock frame-counter)) - ) - 0 - (none) ) + (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) + ) + (set! (-> self control unknown-time-frame14) (-> self clock frame-counter)) + ) + 0 + (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))) @@ -1474,254 +1446,241 @@ (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 () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cond - ((and (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) - (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) - ) - (begin - (set! (-> self board in-air-time) (-> self clock frame-counter)) - (and (not (and (-> self next-state) - (let ((v1-12 (-> self next-state name))) - (or (= v1-12 'target-board-stance) (= v1-12 'target-board-duck-stance) (= v1-12 'target-board-turn-to)) - ) - ) - ) - (and (or (and (or (< 20480.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control gspot-pos)) - ) - ) - (< 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - (< (-> self control unknown-float22) 0.0) - ) - (or (not (or (= (-> self control unknown-pat-surface01 mode) (pat-mode ground)) - (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) - ) - ) - (or (= (-> self control unknown-pat-surface01 event) (pat-event rail)) - (and (logtest? (-> self water flags) (water-flags active)) - (< (-> self control gspot-pos y) (-> self water surface-height)) - ) - (and (and (-> self next-state) (let ((v1-53 (-> self next-state name))) - (or (= v1-53 'target-board-hold) (= v1-53 'target-board-trickx)) - ) - ) - (zero? (logand (focus-status halfpipe) (-> self focus-status))) - ) - (and (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) - (and (< (fabs (vector-dot (-> self control gspot-normal) (-> self control dynam gravity-normal))) 0.7) - (zero? (logand (focus-status halfpipe) (-> self focus-status))) - ) - ) - ) - ) - ) - (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.2)) - ) - ) - ) - ) - (set! (-> self control unknown-float30) 0.0) - (set! (-> self control unknown-float29) 0.0) - ) - (else - (set! (-> self control unknown-float30) 1024.0) - (set! (-> self control unknown-float29) 1.0) - (when (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) - (-> self control gspot-normal) - ) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (-> self control dir-targ) - 0.1 - ) - ) - ) - ) - (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) circle square) (not (-> self board ride-lock))) - (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) - ) + (cond + ((and (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) + (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) ) - (set! (-> self board ride-lock) #f) - ) - (cond - ((and (-> self next-state) (let ((v1-121 (-> self next-state name))) - (or (= v1-121 'target-board-get-on) (= v1-121 'target-board-get-off)) + (begin + (set! (-> self board in-air-time) (-> self clock frame-counter)) + (and (not (and (-> self next-state) + (let ((v1-12 (-> self next-state name))) + (or (= v1-12 'target-board-stance) (= v1-12 'target-board-duck-stance) (= v1-12 'target-board-turn-to)) + ) + ) + ) + (and (or (and (or (< 20480.0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control gspot-pos)) + ) + ) + (< 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) - ) - ) - ((and (-> self next-state) (let ((v1-126 (-> self next-state name))) - (or (= v1-126 'target-board-trickx) (= v1-126 'target-board-hold)) + (< (-> self control unknown-float22) 0.0) + ) + (or (not (or (= (-> self control unknown-pat-surface01 mode) (pat-mode ground)) + (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) + ) ) + (or (= (-> self control unknown-pat-surface01 event) (pat-event rail)) + (and (logtest? (-> self water flags) (water-flags active)) + (< (-> self control gspot-pos y) (-> self water surface-height)) + ) + (and (and (-> self next-state) (let ((v1-53 (-> self next-state name))) + (or (= v1-53 'target-board-hold) (= v1-53 'target-board-trickx)) + ) + ) + (zero? (logand (focus-status halfpipe) (-> self focus-status))) + ) + (and (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) + (and (< (fabs (vector-dot (-> self control gspot-normal) (-> self control dynam gravity-normal))) 0.7) + (zero? (logand (focus-status halfpipe) (-> self focus-status))) + ) + ) + ) + ) + ) + (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.2)) + ) + ) ) - (seek! (-> self control dynam gravity-length) 245760.0 (* 30.0 (-> self clock seconds-per-frame))) - ) - ((= (-> self control unknown-surface00 name) 'spin) - (set! (-> self control dynam gravity-length) - (lerp-scale 245760.0 204800.0 (fabs (-> self board trotyv)) 0.0 145635.56) - ) - ) - ((and (-> self next-state) (= (-> self next-state name) 'target-board-halfpipe)) - (if (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (set! (-> self control dynam gravity-length) 245760.0) - (set! (-> self control dynam gravity-length) 163840.0) - ) - ) - ((and (-> self next-state) - (let ((v1-159 (-> self next-state name))) - (or (= v1-159 'target-board-stance) (= v1-159 'target-board-duck-stance) (= v1-159 'target-board-turn-to)) - ) - ) - (cond - (#f - (set! (-> self control dynam gravity-length) 245760.0) - ) - ((>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) (seconds 0.1)) - (seek! (-> self control dynam gravity-length) 245760.0 (* 245760.0 (-> self clock seconds-per-frame))) ) - (else - (set! (-> self control dynam gravity-length) 81920.0) + (set! (-> self control unknown-float30) 0.0) + (set! (-> self control unknown-float29) 0.0) + ) + (else + (set! (-> self control unknown-float30) 1024.0) + (set! (-> self control unknown-float29) 1.0) + (when (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) + (forward-up-nopitch->quaternion + (-> self control dir-targ) + (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + (-> self control gspot-normal) + ) + (quaternion-slerp! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (-> self control dir-targ) + 0.1 + ) + ) + ) + ) + (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) circle square) (not (-> self board ride-lock))) + (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) + ) + ) + (set! (-> self board ride-lock) #f) + ) + (cond + ((and (-> self next-state) (let ((v1-121 (-> self next-state name))) + (or (= v1-121 'target-board-get-on) (= v1-121 'target-board-get-off)) + ) + ) + ) + ((and (-> self next-state) (let ((v1-126 (-> self next-state name))) + (or (= v1-126 'target-board-trickx) (= v1-126 'target-board-hold)) + ) + ) + (seek! (-> self control dynam gravity-length) 245760.0 (* 30.0 (-> self clock seconds-per-frame))) + ) + ((= (-> self control unknown-surface00 name) 'spin) + (set! (-> self control dynam gravity-length) + (lerp-scale 245760.0 204800.0 (fabs (-> self board trotyv)) 0.0 145635.56) ) + ) + ((and (-> self next-state) (= (-> self next-state name) 'target-board-halfpipe)) + (if (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (set! (-> self control dynam gravity-length) 245760.0) + (set! (-> self control dynam gravity-length) 163840.0) + ) + ) + ((and (-> self next-state) + (let ((v1-159 (-> self next-state name))) + (or (= v1-159 'target-board-stance) (= v1-159 'target-board-duck-stance) (= v1-159 'target-board-turn-to)) + ) + ) + (cond + (#f + (set! (-> self control dynam gravity-length) 245760.0) + ) + ((>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) (seconds 0.1)) + (seek! (-> self control dynam gravity-length) 245760.0 (* 245760.0 (-> self clock seconds-per-frame))) + ) + (else + (set! (-> self control dynam gravity-length) 81920.0) ) ) - (else - (set! (-> self control dynam gravity-length) 245760.0) - ) + ) + (else + (set! (-> self control dynam gravity-length) 245760.0) ) - (vector-float*! - (-> self control dynam gravity) - (-> self control dynam gravity-normal) - (the-as float (-> self control dynam gravity-length)) - ) - (if (< (-> self control unknown-float15) 0.0) - (set! (-> self control unknown-float15) (- 1.0 (-> self control unknown-cpad-info00 stick0-speed))) - ) - (when (and (-> self board unknown-symbol00) (zero? (logand (focus-status halfpipe) (-> self focus-status)))) - (let ((f30-0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control trans)) - ) - ) - (f26-0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control gspot-pos)) - ) - ) - (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - (let ((f0-36 - (* (-> self control unknown-float17) - (vector-length - (vector-flatten! - (new 'stack-no-clear 'vector) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self board unknown-vector00)) - (-> self control unknown-dynamics00 gravity-normal) - ) - ) - ) - ) - ) - (when (and (zero? (shr (shl (-> self board unknown-int00) 54) 61)) - (!= (shr (shl (-> self board unknown-int00) 40) 58) 13) - (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.2)) - (< 819.2 (- f30-0 f0-36)) - (or (< (-> self board unknown-time-frame01) (-> self control unknown-time-frame06)) - (< (- (-> self clock frame-counter) (-> self board unknown-time-frame01)) (seconds 0.2)) - ) - (< 0.98 (vector-dot (-> self board unknown-vector01) (-> self control unknown-dynamics00 gravity-normal))) - (< f26-0 8192.0) - (< f30-0 8192.0) - (or (< (* 0.2 f28-0) f30-0) - (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) - ) - ) - (let ((v1-259 (-> self control transv))) - (let ((a0-74 (-> self control transv)) - (a1-28 (-> self control dynam gravity-normal)) - (f0-44 (* 7.0 (fmin 4096.0 f30-0))) - ) - (.lvf vf2 (&-> a1-28 quad)) - (.lvf vf1 (&-> a0-74 quad)) - (let ((a0-75 f0-44)) - (.mov vf3 a0-75) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-259 quad) vf4) - ) - (if (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) - (set! (-> self board unknown-time-frame01) (-> self clock frame-counter)) - ) - (set! (-> self board unknown-time-frame00) (-> self clock frame-counter)) - ) - ) - (when (and (zero? (logand (-> 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)) - ) - (< 8192.0 (- f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self board slow-transv)))) - ) - (< (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.1)) - ) - (>= 204.8 f30-0) - (not (and (-> self next-state) (= (-> self next-state name) 'target-board-jump))) - ) - (set! (-> self board unknown-time-frame02) (-> self clock frame-counter)) - (vector-length (-> self control transv)) - (let ((v1-302 (new-stack-vector0)) - (f0-51 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - 0.0 - (vector-! - v1-302 - (-> self control transv) - (the-as vector (vector-float*! v1-302 (-> self control dynam gravity-normal) f0-51)) - ) - (let* ((f1-24 (vector-length v1-302)) - (f2-0 f1-24) - (f0-52 (* 0.9 f0-51)) - ) - (vector+! - (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-52)) - (the-as vector (vector-float*! v1-302 v1-302 (/ f1-24 f2-0))) - ) - ) - ) - (set! (-> self board slow-transv quad) (-> self control transv quad)) - (set! (-> self board turn-anim-duck-vel) 0.0) - ) - ) - ) - 0 - (none) ) + (vector-float*! + (-> self control dynam gravity) + (-> self control dynam gravity-normal) + (the-as float (-> self control dynam gravity-length)) + ) + (if (< (-> self control unknown-float15) 0.0) + (set! (-> self control unknown-float15) (- 1.0 (-> self control unknown-cpad-info00 stick0-speed))) + ) + (when (and (-> self board unknown-symbol00) (zero? (logand (focus-status halfpipe) (-> self focus-status)))) + (let ((f30-0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control trans)) + ) + ) + (f26-0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control gspot-pos)) + ) + ) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + (let ((f0-36 + (* (-> self control unknown-float17) + (vector-length + (vector-flatten! + (new 'stack-no-clear 'vector) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self board unknown-vector00)) + (-> self control unknown-dynamics00 gravity-normal) + ) + ) + ) + ) + ) + (when (and (zero? (shr (shl (-> self board unknown-int00) 54) 61)) + (!= (shr (shl (-> self board unknown-int00) 40) 58) 13) + (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.2)) + (< 819.2 (- f30-0 f0-36)) + (or (< (-> self board unknown-time-frame01) (-> self control unknown-time-frame06)) + (< (- (-> self clock frame-counter) (-> self board unknown-time-frame01)) (seconds 0.2)) + ) + (< 0.98 (vector-dot (-> self board unknown-vector01) (-> self control unknown-dynamics00 gravity-normal))) + (< f26-0 8192.0) + (< f30-0 8192.0) + (or (< (* 0.2 f28-0) f30-0) + (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) + ) + ) + (vector+float*! + (-> self control transv) + (-> self control transv) + (-> self control dynam gravity-normal) + (* 7.0 (fmin 4096.0 f30-0)) + ) + (if (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) + (set! (-> self board unknown-time-frame01) (-> self clock frame-counter)) + ) + (set! (-> self board unknown-time-frame00) (-> self clock frame-counter)) + ) + ) + (when (and (zero? (logand (-> 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)) + ) + (< 8192.0 (- f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self board slow-transv)))) + ) + (< (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.1)) + ) + (>= 204.8 f30-0) + (not (and (-> self next-state) (= (-> self next-state name) 'target-board-jump))) + ) + (set! (-> self board unknown-time-frame02) (-> self clock frame-counter)) + (vector-length (-> self control transv)) + (let ((v1-303 (new-stack-vector0)) + (f0-51 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! + v1-303 + (-> self control transv) + (vector-float*! v1-303 (-> self control dynam gravity-normal) f0-51) + ) + (let* ((f1-24 (vector-length v1-303)) + (f2-0 f1-24) + (f0-52 (* 0.9 f0-51)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-52) + (vector-float*! v1-303 v1-303 (/ f1-24 f2-0)) + ) + ) + ) + (set! (-> self board slow-transv quad) (-> self control transv quad)) + (set! (-> self board turn-anim-duck-vel) 0.0) + ) + ) + ) + 0 + (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))))) @@ -1978,6 +1937,8 @@ (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))) @@ -2005,418 +1966,384 @@ #f ) +;; definition for function target-board-compute-edge +;; WARN: Found some very strange gotos. Check result carefully, this is not well tested. +;; INFO: Used lq/sq (defbehavior target-board-compute-edge target () (local-vars (sv-768 int)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 *edge-grab-info*) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> gp-0 quad) (-> self control trans quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self control transv quad)) - (when (not (edge-grab-info-method-9 s4-0)) - (format #t "exit update~%") - (send-event self 'end-mode #f) - (return (the-as time-frame #f)) - ) - (vector-normalize-copy! (-> self board ride-dir) (-> self board ride-segment) 1.0) - (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) - (set! (-> self board ride-lock-on) #f) - (set! (-> self board ride-start-time) (-> self clock frame-counter)) - (vector-normalize-copy! (-> self board ride-dir) (-> self control transv) 1.0) - (dotimes (v1-25 3) - (vector-reset! (-> self board ride-vertex-old v1-25)) - ) - ) - (set! (-> self board ride-rot-abs 1) (-> self board ride-rot-abs 0)) - (let* ((f30-0 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0))) - (f30-1 (* f30-0 (lerp-scale 10.0 100.0 (fabs f30-0) 1820.4445 3640.889))) - ) - (+! (-> self board ride-rtv-abs) (* f30-1 (-> self clock seconds-per-frame))) - (set! (-> self board ride-rtv-abs) (* 0.9 (-> self board ride-rtv-abs))) - (+! (-> self board ride-rot-abs 0) (* (-> self board ride-rtv-abs) (-> self clock seconds-per-frame))) - (when (>= 0.0 (* f30-1 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0)))) - (set! (-> self board ride-rtv-abs) 0.0) - (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-dir))) - ) - ) - (set! (-> self control ground-pat) (the-as pat-surface (-> s4-0 edge-tri-pat))) - (vector-normalize! - (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) - 1.0 - ) - (set! (-> self control unknown-vector36 quad) (-> s4-0 hanging-matrix vector 0 quad)) - (when (< (vector-dot (-> self control unknown-vector34) (-> self board ride-dir)) 0.0) - (let ((s3-2 (new 'stack-no-clear 'vector))) - (set! (-> s3-2 quad) (-> s4-0 world-vertex 0 quad)) - (set! (-> s4-0 world-vertex 0 quad) (-> s4-0 world-vertex 1 quad)) - (set! (-> s4-0 world-vertex 1 quad) (-> s3-2 quad)) - (vector-normalize! - (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) - 1.0 - ) - (set! (-> s3-2 quad) (-> s4-0 adjacent-edge-left-vertex quad)) - (set! (-> s4-0 adjacent-edge-left-vertex quad) (-> s4-0 adjacent-edge-right-vertex quad)) - (set! (-> s4-0 adjacent-edge-right-vertex quad) (-> s3-2 quad)) - ) - (let ((v1-69 (logtest? (-> s4-0 status) 2))) - (if (logtest? (-> s4-0 status) 1) - (logior! (-> s4-0 status) 2) - (set! (-> s4-0 status) (logand -3 (-> s4-0 status))) - ) - (if v1-69 - (logior! (-> s4-0 status) 1) - (set! (-> s4-0 status) (logand -2 (-> s4-0 status))) - ) - ) - ) - (dotimes (v1-74 3) - (set! (-> self board ride-vertex-old v1-74 quad) (-> self board ride-vertex v1-74 quad)) - ) - (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) - (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) - (set! (-> self board ride-vertex-length-old) (-> self board ride-vertex-length)) - (set! (-> self board ride-vertex 0 quad) (-> s4-0 world-vertex 0 quad)) - (set! (-> self board ride-vertex 1 quad) (-> s4-0 world-vertex 1 quad)) - (set! (-> self board ride-vertex 2 quad) (the-as uint128 0)) - (set! (-> self board ride-vertex-length) 1) - (cond - ((logtest? (-> s4-0 status) 2) - (vector-normalize! - (vector-! (-> self control unknown-vector35) (-> s4-0 adjacent-edge-right-vertex) (-> s4-0 world-vertex 1)) - 1.0 - ) - (set! (-> self board ride-vertex 2 quad) (-> s4-0 adjacent-edge-right-vertex quad)) - (+! (-> self board ride-vertex-length) 1) - 0 - ) - (else - (set! (-> self control unknown-vector35 quad) (the-as uint128 0)) - ) - ) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (let ((s3-3 0)) - (label cfg-26) - (set! (-> self board ride-vertex-index) - (segment-array-vector->index - (-> self board ride-vertex) - (-> self board ride-vertex-length) - (the-as float (-> self control trans)) - 0.0 - ) - ) - (when (and (< (-> self board ride-vertex-index) 0.0) - (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) - (zero? s3-3) - ) - (+! s3-3 1) - (dotimes (v1-113 3) - (set! (-> self board ride-vertex v1-113 quad) (-> self board ride-vertex-old v1-113 quad)) - ) - (set! (-> self board ride-vertex-length) (-> self board ride-vertex-length-old)) - (goto cfg-26) - ) - ) - (set! (-> self board ride-vertex-index) (fmax 0.0 (-> self board ride-vertex-index))) - (set! (-> self board ride-vertex-base) - (segment-array-index->vector - (-> self board ride-vertex) - (-> self board ride-vertex-length) - (-> self board ride-vertex-index) - s4-1 - ) - ) - (vector-! - (-> self board ride-segment) - (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1)) - (-> self board ride-vertex (-> self board ride-vertex-base)) - ) - (dotimes (v1-127 3) - (set! (-> self board ride-vertex v1-127 w) 1.0) - ) - (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) - (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) - (set! (-> self board ride-rtv-abs) 0.0) - ) - (let ((f0-25 (vector-vector-distance (-> self control trans) s4-1))) - (when #t - (let ((s3-5 (vector-! (new 'stack-no-clear 'vector) s4-1 (-> self control trans)))) - (let ((f1-9 (* 12288.0 (-> self clock seconds-per-frame)))) - (if (and (not (-> self board ride-lock-on)) (< f1-9 f0-25)) - (vector-normalize! s3-5 f1-9) - (set! (-> self board ride-lock-on) #t) - ) - ) - (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)) - ) - ) - ) - ) - ) - (let ((f30-2 (-> self board ride-speed))) - (vector-normalize-copy! (-> self control unknown-vector08) (-> self board ride-segment) 1.0) - (vector-normalize-copy! (-> self control transv) (-> self board ride-segment) f30-2) - (vector-rotate-y! - (-> self board ride-dir-lean) - (-> self control unknown-vector08) - (* -4551.1113 (-> self board ride-lean)) - ) - (when (< (-> self board ride-vertex-base) (+ (-> self board ride-vertex-length) -1)) - (let ((a0-100 (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1))) - (s4-2 0) - ) - (let ((s3-7 (vector-! (new 'stack-no-clear 'vector) (&+ a0-100 16) a0-100))) - (if (< 14563.556 (fabs (deg-diff (vector-y-angle s3-7) (vector-y-angle (-> self control unknown-vector08))))) - (set! s4-2 (logior s4-2 2)) - ) - (if (< (vector-length s3-7) (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment))))) - (set! s4-2 (logior s4-2 32)) - ) - ) - (if (nonzero? s4-2) - (+! (-> self board ride-vertex-length) -1) - ) - ) - ) - (let ((s4-3 0)) - (if (and (< (fabs f30-2) 16384.0) - (< (- (-> self clock frame-counter) (-> self board ride-start-time)) (seconds 0.1)) - ) - (set! s4-3 (logior s4-3 1)) - ) - (if (or (< (vector-dot - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) - (-> self control unknown-vector08) - ) - 0.02 - ) - (let ((f28-2 (deg-diff (-> self board ride-rot-abs 0) (-> self board ride-rot-abs 1))) - (f26-0 (* 1820.4445 (-> self board ride-lean))) - ) - (when (and (< 0.0 (* f26-0 f28-2)) (!= (-> self board ride-rtv-abs) 0.0)) - (set! (-> self board ride-rtv-abs) 0.0) - (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) - ) - (and (-> self board ride-lock-on) - (or (and (or (< (* f26-0 f28-2) 0.0) (= f26-0 0.0)) - (< 91.022224 (fabs f28-2)) - (and (< 163.84 (fabs (deg-diff f26-0 f28-2))) (format #t "angle ~R ~R~%" f28-2 f26-0)) - ) - (< (lerp-scale 910.2222 2002.4889 (fabs f30-2) 8192.0 24576.0) (fabs f26-0)) - ) - ) - ) - ) - (set! s4-3 (logior s4-3 2)) - ) - (let* ((v1-227 (min (the int (-> self board ride-vertex-index)) (+ (-> self board ride-vertex-length) -1))) - (f28-3 - (vector-length - (vector-! - (new 'stack-no-clear 'vector) - (-> self board ride-vertex (+ v1-227 1)) - (-> self board ride-vertex v1-227) - ) - ) - ) - (s3-8 (new 'stack-no-clear 'collide-query)) - (f26-1 81920.0) - ) - (set! sv-768 8) - (let ((v1-234 s3-8)) - (set! (-> v1-234 radius) 1228.8) - (set! (-> v1-234 collide-with) - (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) - ) - (set! (-> v1-234 ignore-process0) self) - (set! (-> v1-234 ignore-process1) #f) - (set! (-> v1-234 ignore-pat) (-> self control pat-ignore-mask)) - (set! (-> v1-234 action-mask) (collide-action solid)) - ) - (let ((v1-235 (-> s3-8 start-pos))) - (let ((a0-127 (-> self control trans)) - (a1-55 (-> self board ride-dir)) - (f0-51 3276.8) - ) - (.lvf vf2 (&-> a1-55 quad)) - (.lvf vf1 (&-> a0-127 quad)) - (let ((a0-128 f0-51)) - (.mov vf3 a0-128) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-235 quad) vf4) - ) - (let ((v1-236 (-> s3-8 start-pos))) - (let ((a0-129 (-> s3-8 start-pos)) - (a1-58 (-> self control dynam gravity-normal)) - (f0-52 5324.8) - ) - (.lvf vf2 (&-> a1-58 quad)) - (.lvf vf1 (&-> a0-129 quad)) - (let ((a0-130 f0-52)) - (.mov vf3 a0-130) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-236 quad) vf4) - ) - (vector-float*! (-> s3-8 move-dist) (-> self control dynam gravity-normal) -49152.0) - (when (>= (fill-and-probe-using-line-sphere *collide-cache* s3-8) 0.0) - (set! f26-1 (- (-> self control trans y) (-> s3-8 best-other-tri intersect y))) - (set! sv-768 (the-as int (-> s3-8 best-other-tri pat))) - ) - (when (and (< (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) - (+ (-> self board ride-vertex-index) - (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) f28-3) - ) - ) - (>= f28-3 3686.4) - (and (or (>= f26-1 6963.2) (and (>= f26-1 2048.0) (zero? (shr (shl sv-768 54) 61)))) - (logtest? (shr (shl sv-768 57) 57) 8) - ) - ) - (format - #t - "end with length ~M sp:~M ang:~M b:~X ~f/~f~%" - f28-3 - (-> self board ride-speed) - f26-1 - sv-768 - (+ (-> self board ride-vertex-index) - (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) - (vector-length (-> self board ride-segment)) - ) - ) - (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) - ) - (set! s4-3 (logior s4-3 4)) - ) - ) - (let ((s3-9 (-> self board ride-vertex (-> self board ride-vertex-base)))) - (if (not (or (vector= s3-9 (the-as vector (-> self board ride-vertex-old))) - (vector= s3-9 (-> self board ride-vertex-old 1)) - (vector= s3-9 (-> self board ride-vertex-old 2)) - (vector= (&+ s3-9 16) (the-as vector (-> self board ride-vertex-old))) - (vector= (&+ s3-9 16) (-> self board ride-vertex-old 1)) - (vector= (&+ s3-9 16) (-> self board ride-vertex-old 2)) - ) - ) - (set! s4-3 (logior s4-3 8)) - ) - ) - (if (>= (- (-> self clock frame-counter) (-> self board ride-button-time)) (seconds 0.05)) - (set! s4-3 (logior s4-3 16)) - ) - (if (< (vector-length (-> self board ride-segment)) - (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment-old)))) - ) - (set! s4-3 (logior s4-3 32)) - ) - (if (logtest? (cshape-moving-flags csmf16) (-> self control status)) - (set! s4-3 (logior s4-3 64)) - ) - (logclear! (-> self control status) (cshape-moving-flags csmf16)) - (when (and (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) (nonzero? s4-3)) - (if (logtest? s4-3 1) - (format #t "exit speed ~M~%" f30-2) - ) - (if (logtest? s4-3 2) - (format - #t - "exit angle ~F~%" - (vector-dot - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) - (-> self control unknown-vector08) - ) - ) - ) - (if (logtest? s4-3 4) - (format - #t - "exit end ~F/~F~%" - (-> self board ride-vertex-index) - (the float (-> self board ride-vertex-length)) - ) - ) - (if (logtest? s4-3 8) - (format #t "exit match~%") - ) - (if (logtest? s4-3 16) - (format #t "exit button~%") - ) - (if (logtest? s4-3 32) - (format #t "exit length~%") - ) - (when (logtest? s4-3 64) - (set! (-> self board ride-lock-on) #f) - (format #t "exit probe~%") - ) - (if (logtest? s4-3 128) - (format #t "exit probe2~%") - ) - (cond - ((or (logtest? s4-3 1) (and (logtest? s4-3 2) (< (fabs f30-2) 32768.0))) - (let ((gp-1 (-> self control unknown-vector36))) - (let* ((a0-171 (vector-rotate-y! (new 'stack-no-clear 'vector) (-> self board ride-dir) -16384.0)) - (f28-4 (* (-> self board ride-lean) (vector-dot a0-171 gp-1))) - ) - (format #t "throw side ~f ~A speed ~m~%" f28-4 (>= f28-4 0.0) f30-2) - (vector-normalize-copy! - (-> self control transv) - gp-1 - (* (lerp-scale 8192.0 32768.0 (fabs (-> self board ride-lean)) 0.0 1.0) (if (>= f28-4 0.0) - 1.0 - -1.0 - ) - ) - ) - ) - (set! (-> self control unknown-vector08 quad) (-> gp-1 quad)) - ) - ) - ((logtest? s4-3 42) - (collide-shape-method-29 (-> self control) gp-0) - (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)) - ) - (send-event self 'end-mode (zero? (logand s4-3 75))) - ) - ) - (vector-rotate-y! - (-> self control unknown-vector08) - (-> self control unknown-vector08) - (+ (-> self board ride-rot) (* -2730.6667 (-> self board ride-lean))) - ) - (set! (-> self board ride-time) (-> self clock frame-counter)) - (set! (-> self board ride-speed) f30-2) + (let ((s4-0 *edge-grab-info*) + (gp-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> gp-0 quad) (-> self control trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self control transv quad)) + (when (not (edge-grab-info-method-9 s4-0)) + (format #t "exit update~%") + (send-event self 'end-mode #f) + (return (the-as time-frame #f)) + ) + (vector-normalize-copy! (-> self board ride-dir) (-> self board ride-segment) 1.0) + (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) + (set! (-> self board ride-lock-on) #f) + (set! (-> self board ride-start-time) (-> self clock frame-counter)) + (vector-normalize-copy! (-> self board ride-dir) (-> self control transv) 1.0) + (dotimes (v1-25 3) + (vector-reset! (-> self board ride-vertex-old v1-25)) ) ) + (set! (-> self board ride-rot-abs 1) (-> self board ride-rot-abs 0)) + (let* ((f30-0 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0))) + (f30-1 (* f30-0 (lerp-scale 10.0 100.0 (fabs f30-0) 1820.4445 3640.889))) + ) + (+! (-> self board ride-rtv-abs) (* f30-1 (-> self clock seconds-per-frame))) + (set! (-> self board ride-rtv-abs) (* 0.9 (-> self board ride-rtv-abs))) + (+! (-> self board ride-rot-abs 0) (* (-> self board ride-rtv-abs) (-> self clock seconds-per-frame))) + (when (>= 0.0 (* f30-1 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0)))) + (set! (-> self board ride-rtv-abs) 0.0) + (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-dir))) + ) + ) + (set! (-> self control ground-pat) (the-as pat-surface (-> s4-0 edge-tri-pat))) + (vector-normalize! + (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) + 1.0 + ) + (set! (-> self control unknown-vector36 quad) (-> s4-0 hanging-matrix vector 0 quad)) + (when (< (vector-dot (-> self control unknown-vector34) (-> self board ride-dir)) 0.0) + (let ((s3-2 (new 'stack-no-clear 'vector))) + (set! (-> s3-2 quad) (-> s4-0 world-vertex 0 quad)) + (set! (-> s4-0 world-vertex 0 quad) (-> s4-0 world-vertex 1 quad)) + (set! (-> s4-0 world-vertex 1 quad) (-> s3-2 quad)) + (vector-normalize! + (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) + 1.0 + ) + (set! (-> s3-2 quad) (-> s4-0 adjacent-edge-left-vertex quad)) + (set! (-> s4-0 adjacent-edge-left-vertex quad) (-> s4-0 adjacent-edge-right-vertex quad)) + (set! (-> s4-0 adjacent-edge-right-vertex quad) (-> s3-2 quad)) + ) + (let ((v1-69 (logtest? (-> s4-0 status) 2))) + (if (logtest? (-> s4-0 status) 1) + (logior! (-> s4-0 status) 2) + (set! (-> s4-0 status) (logand -3 (-> s4-0 status))) + ) + (if v1-69 + (logior! (-> s4-0 status) 1) + (set! (-> s4-0 status) (logand -2 (-> s4-0 status))) + ) + ) + ) + (dotimes (v1-74 3) + (set! (-> self board ride-vertex-old v1-74 quad) (-> self board ride-vertex v1-74 quad)) + ) + (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) + (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) + (set! (-> self board ride-vertex-length-old) (-> self board ride-vertex-length)) + (set! (-> self board ride-vertex 0 quad) (-> s4-0 world-vertex 0 quad)) + (set! (-> self board ride-vertex 1 quad) (-> s4-0 world-vertex 1 quad)) + (set! (-> self board ride-vertex 2 quad) (the-as uint128 0)) + (set! (-> self board ride-vertex-length) 1) + (cond + ((logtest? (-> s4-0 status) 2) + (vector-normalize! + (vector-! (-> self control unknown-vector35) (-> s4-0 adjacent-edge-right-vertex) (-> s4-0 world-vertex 1)) + 1.0 + ) + (set! (-> self board ride-vertex 2 quad) (-> s4-0 adjacent-edge-right-vertex quad)) + (+! (-> self board ride-vertex-length) 1) + 0 + ) + (else + (set! (-> self control unknown-vector35 quad) (the-as uint128 0)) + ) + ) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (let ((s3-3 0)) + (label cfg-26) + (set! (-> self board ride-vertex-index) + (segment-array-vector->index + (-> self board ride-vertex) + (-> self board ride-vertex-length) + (the-as float (-> self control trans)) + 0.0 + ) + ) + (when (and (< (-> self board ride-vertex-index) 0.0) + (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) + (zero? s3-3) + ) + (+! s3-3 1) + (dotimes (v1-113 3) + (set! (-> self board ride-vertex v1-113 quad) (-> self board ride-vertex-old v1-113 quad)) + ) + (set! (-> self board ride-vertex-length) (-> self board ride-vertex-length-old)) + (goto cfg-26) + ) + ) + (set! (-> self board ride-vertex-index) (fmax 0.0 (-> self board ride-vertex-index))) + (set! (-> self board ride-vertex-base) + (segment-array-index->vector + (-> self board ride-vertex) + (-> self board ride-vertex-length) + (-> self board ride-vertex-index) + s4-1 + ) + ) + (vector-! + (-> self board ride-segment) + (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1)) + (-> self board ride-vertex (-> self board ride-vertex-base)) + ) + (dotimes (v1-127 3) + (set! (-> self board ride-vertex v1-127 w) 1.0) + ) + (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) + (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) + (set! (-> self board ride-rtv-abs) 0.0) + ) + (let ((f0-25 (vector-vector-distance (-> self control trans) s4-1))) + (when #t + (let ((s3-5 (vector-! (new 'stack-no-clear 'vector) s4-1 (-> self control trans)))) + (let ((f1-9 (* 12288.0 (-> self clock seconds-per-frame)))) + (if (and (not (-> self board ride-lock-on)) (< f1-9 f0-25)) + (vector-normalize! s3-5 f1-9) + (set! (-> self board ride-lock-on) #t) + ) + ) + (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)) + ) + ) + ) + ) + ) + (let ((f30-2 (-> self board ride-speed))) + (vector-normalize-copy! (-> self control unknown-vector08) (-> self board ride-segment) 1.0) + (vector-normalize-copy! (-> self control transv) (-> self board ride-segment) f30-2) + (vector-rotate-y! + (-> self board ride-dir-lean) + (-> self control unknown-vector08) + (* -4551.1113 (-> self board ride-lean)) + ) + (when (< (-> self board ride-vertex-base) (+ (-> self board ride-vertex-length) -1)) + (let ((a0-100 (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1))) + (s4-2 0) + ) + (let ((s3-7 (vector-! (new 'stack-no-clear 'vector) (&+ a0-100 16) a0-100))) + (if (< 14563.556 (fabs (deg-diff (vector-y-angle s3-7) (vector-y-angle (-> self control unknown-vector08))))) + (set! s4-2 (logior s4-2 2)) + ) + (if (< (vector-length s3-7) (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment))))) + (set! s4-2 (logior s4-2 32)) + ) + ) + (if (nonzero? s4-2) + (+! (-> self board ride-vertex-length) -1) + ) + ) + ) + (let ((s4-3 0)) + (if (and (< (fabs f30-2) 16384.0) + (< (- (-> self clock frame-counter) (-> self board ride-start-time)) (seconds 0.1)) + ) + (set! s4-3 (logior s4-3 1)) + ) + (if (or (< (vector-dot + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) + (-> self control unknown-vector08) + ) + 0.02 + ) + (let ((f28-2 (deg-diff (-> self board ride-rot-abs 0) (-> self board ride-rot-abs 1))) + (f26-0 (* 1820.4445 (-> self board ride-lean))) + ) + (when (and (< 0.0 (* f26-0 f28-2)) (!= (-> self board ride-rtv-abs) 0.0)) + (set! (-> self board ride-rtv-abs) 0.0) + (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) + ) + (and (-> self board ride-lock-on) + (or (and (or (< (* f26-0 f28-2) 0.0) (= f26-0 0.0)) + (< 91.022224 (fabs f28-2)) + (and (< 163.84 (fabs (deg-diff f26-0 f28-2))) (format #t "angle ~R ~R~%" f28-2 f26-0)) + ) + (< (lerp-scale 910.2222 2002.4889 (fabs f30-2) 8192.0 24576.0) (fabs f26-0)) + ) + ) + ) + ) + (set! s4-3 (logior s4-3 2)) + ) + (let* ((v1-227 (min (the int (-> self board ride-vertex-index)) (+ (-> self board ride-vertex-length) -1))) + (f28-3 + (vector-length + (vector-! + (new 'stack-no-clear 'vector) + (-> self board ride-vertex (+ v1-227 1)) + (-> self board ride-vertex v1-227) + ) + ) + ) + (s3-8 (new 'stack-no-clear 'collide-query)) + (f26-1 81920.0) + ) + (set! sv-768 8) + (let ((v1-234 s3-8)) + (set! (-> v1-234 radius) 1228.8) + (set! (-> v1-234 collide-with) + (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) + ) + (set! (-> v1-234 ignore-process0) self) + (set! (-> v1-234 ignore-process1) #f) + (set! (-> v1-234 ignore-pat) (-> self control pat-ignore-mask)) + (set! (-> v1-234 action-mask) (collide-action solid)) + ) + (vector+float*! (-> s3-8 start-pos) (-> self control trans) (-> self board ride-dir) 3276.8) + (vector+float*! (-> s3-8 start-pos) (-> s3-8 start-pos) (-> self control dynam gravity-normal) 5324.8) + (vector-float*! (-> s3-8 move-dist) (-> self control dynam gravity-normal) -49152.0) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* s3-8) 0.0) + (set! f26-1 (- (-> self control trans y) (-> s3-8 best-other-tri intersect y))) + (set! sv-768 (the-as int (-> s3-8 best-other-tri pat))) + ) + (when (and (< (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) + (+ (-> self board ride-vertex-index) + (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) f28-3) + ) + ) + (>= f28-3 3686.4) + (and (or (>= f26-1 6963.2) (and (>= f26-1 2048.0) (zero? (shr (shl sv-768 54) 61)))) + (logtest? (shr (shl sv-768 57) 57) 8) + ) + ) + (format + #t + "end with length ~M sp:~M ang:~M b:~X ~f/~f~%" + f28-3 + (-> self board ride-speed) + f26-1 + sv-768 + (+ (-> self board ride-vertex-index) + (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) + (vector-length (-> self board ride-segment)) + ) + ) + (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) + ) + (set! s4-3 (logior s4-3 4)) + ) + ) + (let ((s3-9 (-> self board ride-vertex (-> self board ride-vertex-base)))) + (if (not (or (vector= s3-9 (the-as vector (-> self board ride-vertex-old))) + (vector= s3-9 (-> self board ride-vertex-old 1)) + (vector= s3-9 (-> self board ride-vertex-old 2)) + (vector= (&+ s3-9 16) (the-as vector (-> self board ride-vertex-old))) + (vector= (&+ s3-9 16) (-> self board ride-vertex-old 1)) + (vector= (&+ s3-9 16) (-> self board ride-vertex-old 2)) + ) + ) + (set! s4-3 (logior s4-3 8)) + ) + ) + (if (>= (- (-> self clock frame-counter) (-> self board ride-button-time)) (seconds 0.05)) + (set! s4-3 (logior s4-3 16)) + ) + (if (< (vector-length (-> self board ride-segment)) + (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment-old)))) + ) + (set! s4-3 (logior s4-3 32)) + ) + (if (logtest? (cshape-moving-flags csmf16) (-> self control status)) + (set! s4-3 (logior s4-3 64)) + ) + (logclear! (-> self control status) (cshape-moving-flags csmf16)) + (when (and (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) (nonzero? s4-3)) + (if (logtest? s4-3 1) + (format #t "exit speed ~M~%" f30-2) + ) + (if (logtest? s4-3 2) + (format + #t + "exit angle ~F~%" + (vector-dot + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) + (-> self control unknown-vector08) + ) + ) + ) + (if (logtest? s4-3 4) + (format + #t + "exit end ~F/~F~%" + (-> self board ride-vertex-index) + (the float (-> self board ride-vertex-length)) + ) + ) + (if (logtest? s4-3 8) + (format #t "exit match~%") + ) + (if (logtest? s4-3 16) + (format #t "exit button~%") + ) + (if (logtest? s4-3 32) + (format #t "exit length~%") + ) + (when (logtest? s4-3 64) + (set! (-> self board ride-lock-on) #f) + (format #t "exit probe~%") + ) + (if (logtest? s4-3 128) + (format #t "exit probe2~%") + ) + (cond + ((or (logtest? s4-3 1) (and (logtest? s4-3 2) (< (fabs f30-2) 32768.0))) + (let ((gp-1 (-> self control unknown-vector36))) + (let* ((a0-169 (vector-rotate-y! (new 'stack-no-clear 'vector) (-> self board ride-dir) -16384.0)) + (f28-4 (* (-> self board ride-lean) (vector-dot a0-169 gp-1))) + ) + (format #t "throw side ~f ~A speed ~m~%" f28-4 (>= f28-4 0.0) f30-2) + (vector-normalize-copy! + (-> self control transv) + gp-1 + (* (lerp-scale 8192.0 32768.0 (fabs (-> self board ride-lean)) 0.0 1.0) (if (>= f28-4 0.0) + 1.0 + -1.0 + ) + ) + ) + ) + (set! (-> self control unknown-vector08 quad) (-> gp-1 quad)) + ) + ) + ((logtest? s4-3 42) + (collide-shape-method-29 (-> self control) gp-0) + (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)) + ) + (send-event self 'end-mode (zero? (logand s4-3 75))) + ) + ) + (vector-rotate-y! + (-> self control unknown-vector08) + (-> self control unknown-vector08) + (+ (-> self board ride-rot) (* -2730.6667 (-> self board ride-lean))) + ) + (set! (-> self board ride-time) (-> self clock frame-counter)) + (set! (-> self board ride-speed) f30-2) + ) ) - (let ((v0-3 (-> self clock frame-counter))) - (set! (-> self control unknown-time-frame06) v0-3) - v0-3 - ) + ) + (let ((v0-3 (-> self clock frame-counter))) + (set! (-> self control unknown-time-frame06) v0-3) + v0-3 ) ) +;; 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 @@ -2464,6 +2391,9 @@ (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))))) @@ -2695,17 +2625,22 @@ (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))))) @@ -2817,6 +2752,8 @@ (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) @@ -2935,6 +2872,8 @@ (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 c39a6f57ec..65f7ae4af8 100644 --- a/goal_src/jak2/engine/target/logic-target.gc +++ b/goal_src/jak2/engine/target/logic-target.gc @@ -477,7 +477,7 @@ (vector-! v1-180 (-> arg0 control transv) - (the-as vector (vector-float*! v1-180 (-> arg0 control dynam gravity-normal) f0-15)) + (vector-float*! v1-180 (-> arg0 control dynam gravity-normal) f0-15) ) ) (let ((f0-16 (vector-length v1-180))) @@ -887,90 +887,62 @@ ;; definition for function target-add-slide-factor ;; INFO: Used lq/sq (defbehavior target-add-slide-factor target ((arg0 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) + (let* ((a1-2 (vector-flatten! + (new 'stack-no-clear 'vector) + (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) + (-> self control local-normal) + ) + ) + (s4-1 (vector-matrix*! (new 'stack-no-clear 'vector) a1-2 (-> self control unknown-matrix00))) + (s5-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) s4-1 1.0)) ) - (init-vf0-vector) - (let* ((a1-2 (vector-flatten! - (new 'stack-no-clear 'vector) - (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) - (-> self control local-normal) - ) + (vector+float*! arg0 arg0 s4-1 (-> self control unknown-surface01 slide-factor)) + (let ((a1-5 (-> self control unknown-vector26))) + (when (not (or (= (- 1.0 (-> self control unknown-surface01 slope-up-traction)) 0.0) (< (vector-length s4-1) 0.1))) + (let* ((a0-7 (vector-matrix*! (new 'stack-no-clear 'vector) a1-5 (-> self control unknown-matrix00))) + (v1-15 (new-stack-vector0)) + (f0-5 (vector-dot a0-7 arg0)) + ) + 0.0 + (vector-! v1-15 arg0 (vector-float*! v1-15 a0-7 f0-5)) + (let* ((f1-5 (vector-length v1-15)) + (f2-0 f1-5) ) - (s4-1 (vector-matrix*! (new 'stack-no-clear 'vector) a1-2 (-> self control unknown-matrix00))) - (s5-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) s4-1 1.0)) - ) - (let ((v1-4 arg0)) - (let ((a0-5 arg0) - (a1-4 s4-1) - (f0-0 (-> self control unknown-surface01 slide-factor)) - ) - (.lvf vf2 (&-> a1-4 quad)) - (.lvf vf1 (&-> a0-5 quad)) - (let ((a0-6 f0-0)) - (.mov vf3 a0-6) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-4 quad) vf4) - ) - (let ((a1-5 (-> self control unknown-vector26))) - (when (not (or (= (- 1.0 (-> self control unknown-surface01 slope-up-traction)) 0.0) (< (vector-length s4-1) 0.1))) - (let* ((a0-8 (vector-matrix*! (new 'stack-no-clear 'vector) a1-5 (-> self control unknown-matrix00))) - (v1-14 (new-stack-vector0)) - (f0-5 (vector-dot a0-8 arg0)) - ) - 0.0 - (vector-! v1-14 arg0 (the-as vector (vector-float*! v1-14 a0-8 f0-5))) - (let* ((f1-5 (vector-length v1-14)) - (f2-0 f1-5) - ) - (if (< f0-5 0.0) - (set! f0-5 (* f0-5 (-> self control unknown-surface01 slope-up-traction))) - ) - (let ((f0-6 (+ f0-5 (-> self control unknown-surface01 slope-down-factor)))) - (vector+! - arg0 - (the-as vector (vector-float*! arg0 a0-8 f0-6)) - (the-as vector (vector-float*! v1-14 v1-14 (/ f1-5 f2-0))) - ) + (if (< f0-5 0.0) + (set! f0-5 (* f0-5 (-> self control unknown-surface01 slope-up-traction))) ) + (let ((f0-6 (+ f0-5 (-> self control unknown-surface01 slope-down-factor)))) + (vector+! arg0 (vector-float*! arg0 a0-7 f0-6) (vector-float*! v1-15 v1-15 (/ f1-5 f2-0))) ) ) ) ) - (let ((t9-5 vector-xz-normalize!) - (a0-11 (new-stack-vector0)) - ) - (set! (-> a0-11 quad) (-> arg0 quad)) - (let ((v1-17 (t9-5 a0-11 1.0))) - (set! (-> v1-17 y) 0.0) - (let* ((f0-10 (vector-dot s5-1 v1-17)) - (v1-19 arg0) - (f1-10 (sqrtf (+ (* (-> v1-19 x) (-> v1-19 x)) (* (-> v1-19 z) (-> v1-19 z))))) - ) - (if (>= f0-10 0.0) - (vector-xz-normalize! - arg0 - (fmax 0.0 (+ f1-10 (* f0-10 (-> self control unknown-surface01 slope-down-factor)))) - ) - (vector-xz-normalize! - arg0 - (fmax 0.0 (- f1-10 (* (- f0-10) (-> self control unknown-surface01 slope-up-factor)))) - ) - ) - ) - ) - ) ) - arg0 + (let ((t9-5 vector-xz-normalize!) + (a0-10 (new-stack-vector0)) + ) + (set! (-> a0-10 quad) (-> arg0 quad)) + (let ((v1-18 (t9-5 a0-10 1.0))) + (set! (-> v1-18 y) 0.0) + (let* ((f0-10 (vector-dot s5-1 v1-18)) + (v1-20 arg0) + (f1-10 (sqrtf (+ (* (-> v1-20 x) (-> v1-20 x)) (* (-> v1-20 z) (-> v1-20 z))))) + ) + (if (>= f0-10 0.0) + (vector-xz-normalize! + arg0 + (fmax 0.0 (+ f1-10 (* f0-10 (-> self control unknown-surface01 slope-down-factor)))) + ) + (vector-xz-normalize! + arg0 + (fmax 0.0 (- f1-10 (* (- f0-10) (-> self control unknown-surface01 slope-up-factor)))) + ) + ) + ) + ) + ) ) + arg0 ) ;; definition for function add-thrust @@ -1159,7 +1131,7 @@ (f0-2 (vector-dot a0-4 (-> self control unknown-vector00))) ) 0.0 - (vector-! v1-9 (-> self control unknown-vector00) (the-as vector (vector-float*! v1-9 a0-4 f0-2))) + (vector-! v1-9 (-> self control unknown-vector00) (vector-float*! v1-9 a0-4 f0-2)) (let* ((f1-2 (vector-length v1-9)) (f2-0 f1-2) ) @@ -1171,8 +1143,8 @@ ) (vector+! (-> self control unknown-vector00) - (the-as vector (vector-float*! (-> self control unknown-vector00) a0-4 f0-2)) - (the-as vector (vector-float*! v1-9 v1-9 (/ f1-2 f2-0))) + (vector-float*! (-> self control unknown-vector00) a0-4 f0-2) + (vector-float*! v1-9 v1-9 (/ f1-2 f2-0)) ) ) ) @@ -1823,11 +1795,7 @@ (let ((v1-189 (new-stack-vector0))) (let ((f0-9 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-189 - (-> self control transv) - (the-as vector (vector-float*! v1-189 (-> self control dynam gravity-normal) f0-9)) - ) + (vector-! v1-189 (-> self control transv) (vector-float*! v1-189 (-> self control dynam gravity-normal) f0-9)) ) (let* ((f0-10 (vector-length v1-189)) (f1-5 f0-10) @@ -1835,8 +1803,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0)) - (the-as vector (vector-float*! v1-189 v1-189 (/ f0-10 f1-5))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-189 v1-189 (/ f0-10 f1-5)) ) ) ) @@ -1846,15 +1814,15 @@ (f0-13 (vector-dot (-> self control dynam gravity-normal) a1-36)) ) 0.0 - (vector-! v1-193 a1-36 (the-as vector (vector-float*! v1-193 (-> self control dynam gravity-normal) f0-13))) + (vector-! v1-193 a1-36 (vector-float*! v1-193 (-> self control dynam gravity-normal) f0-13)) (let* ((f1-8 (vector-length v1-193)) (f2-1 f1-8) (f0-14 (+ 512.0 f0-13)) ) (vector+! a1-36 - (the-as vector (vector-float*! a1-36 (-> self control dynam gravity-normal) f0-14)) - (the-as vector (vector-float*! v1-193 v1-193 (/ f1-8 f2-1))) + (vector-float*! a1-36 (-> self control dynam gravity-normal) f0-14) + (vector-float*! v1-193 v1-193 (/ f1-8 f2-1)) ) ) ) @@ -1932,7 +1900,7 @@ (set! (-> self beard?) #t) ) (else - (draw-control-method-12 (-> self draw) 2 0) + (draw-control-method-12 (-> self draw) 0 2) (set! (-> self beard?) #f) ) ) @@ -2357,130 +2325,105 @@ ;; definition for function target-compute-pole ;; INFO: Used lq/sq (defbehavior target-compute-pole target () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) + (let* ((s2-0 (handle->process (-> self control unknown-handle01))) + (gp-0 (-> (the-as swingpole s2-0) dir)) ) - (init-vf0-vector) - (let* ((s2-0 (handle->process (-> self control unknown-handle01))) - (gp-0 (-> (the-as swingpole s2-0) dir)) - ) - (set! (-> self control unknown-vector34 quad) (-> gp-0 quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let ((v1-7 (-> (the-as swingpole s2-0) root trans)) - (a0-5 gp-0) - (f0-0 (-> (the-as swingpole s2-0) edge-length)) - ) - (.lvf vf2 (&-> a0-5 quad)) - (.lvf vf1 (&-> v1-7 quad)) - (let ((v1-8 f0-0)) - (.mov vf3 v1-8) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s4-0 quad) vf4) - (let ((s3-0 (new 'stack-no-clear 'vector))) - (let ((v1-10 (-> (the-as swingpole s2-0) root trans)) - (a0-6 gp-0) - (f0-2 (- (-> (the-as swingpole s2-0) edge-length))) + (set! (-> self control unknown-vector34 quad) (-> gp-0 quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (let ((s4-1 (vector+float*! + (new 'stack-no-clear 'vector) + (-> (the-as swingpole s2-0) root trans) + gp-0 + (the-as float (-> (the-as swingpole s2-0) edge-length)) + ) + ) + (s3-1 (vector+float*! + (new 'stack-no-clear 'vector) + (-> (the-as swingpole s2-0) root trans) + gp-0 + (- (-> (the-as swingpole s2-0) edge-length)) + ) ) - (.lvf vf2 (&-> a0-6 quad)) - (.lvf vf1 (&-> v1-10 quad)) - (let ((v1-11 f0-2)) - (.mov vf3 v1-11) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s3-0 quad) vf4) - (let ((v1-12 (new 'stack-no-clear 'vector))) - (vector+! v1-12 s4-0 s3-0) - (vector-float*! v1-12 v1-12 0.5) - (set! (-> v1-12 y) (+ -6144.0 (-> v1-12 y))) - (send-event *camera* 'ease-in #x3f000000 v1-12) - ) - (vector-segment-distance-point! (-> self control unknown-vector30) s4-0 s3-0 s5-0) - (if (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) - (set! (-> self control unknown-float33) - (fmax 0.0 (fmin 1.0 (/ (vector-vector-distance s4-0 s5-0) (* 2.0 (-> (the-as swingpole s2-0) edge-length))))) - ) - (vector-lerp! s5-0 s4-0 s3-0 (-> self control unknown-float33)) - ) - (when *display-edge-collision-marks* - (add-debug-vector - #t - (bucket-id debug-no-zbuf1) - (-> (the-as swingpole s2-0) root trans) - (the-as vector (&-> s2-0 stack 96)) - (meters 3.0) - (the-as rgba (-> (new 'static 'array uint64 1 #x80ff00ff) 0)) - ) - (add-debug-sphere - #t - (bucket-id debug2) - (-> self control unknown-vector30) - (meters 0.2) - (the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0)) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf1) - s4-0 - (meters 0.2) - (the-as rgba (-> (new 'static 'array uint64 1 #x8000ff00) 0)) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf1) - s3-0 - (meters 0.2) - (the-as rgba (-> (new 'static 'array uint64 1 #x8040ff00) 0)) - ) - (add-debug-sphere #t (bucket-id debug-no-zbuf1) s5-0 (meters 0.2) (new 'static 'rgba :b #xff :a #x80)) - ) ) + (let ((v1-10 (new 'stack-no-clear 'vector))) + (vector+! v1-10 s4-1 s3-1) + (vector-float*! v1-10 v1-10 0.5) + (set! (-> v1-10 y) (+ -6144.0 (-> v1-10 y))) + (send-event *camera* 'ease-in #x3f000000 v1-10) ) - (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-1 (method-of-object (-> self control) collide-shape-method-28))) - (vector-normalize! a0-26 2457.6) - (s4-1) - ) - ) - (else - (set! (-> self control unknown-symbol02) (the-as float #t)) - (collide-shape-method-29 - (-> self control) - (vector-! (new 'stack-no-clear 'vector) s5-0 (-> self control unknown-vector31)) - ) - (set! (-> self control unknown-vector21 quad) (-> self control trans quad)) - ) + (vector-segment-distance-point! (-> self control unknown-vector30) s4-1 s3-1 s5-0) + (if (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) + (set! (-> self control unknown-float33) + (fmax 0.0 (fmin 1.0 (/ (vector-vector-distance s4-1 s5-0) (* 2.0 (-> (the-as swingpole s2-0) edge-length))))) + ) + (vector-lerp! s5-0 s4-1 s3-1 (-> self control unknown-float33)) ) + (when *display-edge-collision-marks* + (add-debug-vector + #t + (bucket-id debug-no-zbuf1) + (-> (the-as swingpole s2-0) root trans) + (-> (the-as swingpole s2-0) dir) + (meters 3.0) + (the-as rgba (-> (new 'static 'array uint64 1 #x80ff00ff) 0)) + ) + (add-debug-sphere + #t + (bucket-id debug2) + (-> self control unknown-vector30) + (meters 0.2) + (the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0)) + ) + (add-debug-sphere + #t + (bucket-id debug-no-zbuf1) + s4-1 + (meters 0.2) + (the-as rgba (-> (new 'static 'array uint64 1 #x8000ff00) 0)) + ) + (add-debug-sphere + #t + (bucket-id debug-no-zbuf1) + s3-1 + (meters 0.2) + (the-as rgba (-> (new 'static 'array uint64 1 #x8040ff00) 0)) + ) + (add-debug-sphere #t (bucket-id debug-no-zbuf1) s5-0 (meters 0.2) (new 'static 'rgba :b #xff :a #x80)) ) ) - (let ((s5-3 (vector-cross! (-> self control unknown-vector36) gp-0 (-> self control dynam gravity-normal)))) - (if (>= 0.0 - (vector-dot s5-3 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) - ) - (vector-negate! s5-3 s5-3) + (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) + ) + ) + (else + (set! (-> self control unknown-symbol02) (the-as float #t)) + (collide-shape-method-29 + (-> self control) + (vector-! (new 'stack-no-clear 'vector) s5-0 (-> self control unknown-vector31)) + ) + (set! (-> self control unknown-vector21 quad) (-> self control trans quad)) ) - (forward-up-nopitch->quaternion (-> self control dir-targ) s5-3 (-> self control dynam gravity-normal)) + ) ) ) - (set-quaternion! (-> self control) (-> self control dir-targ)) - (joint-control-method-10 (-> self skel)) - (draw-control-method-14 (-> self draw) (-> self node-list) (-> self skel)) - (collide-shape-method-46 (-> self control)) - (none) + (let ((s5-3 (vector-cross! (-> self control unknown-vector36) gp-0 (-> self control dynam gravity-normal)))) + (if (>= 0.0 + (vector-dot s5-3 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) + ) + (vector-negate! s5-3 s5-3) + ) + (forward-up-nopitch->quaternion (-> self control dir-targ) s5-3 (-> self control dynam gravity-normal)) + ) ) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (joint-control-method-10 (-> self skel)) + (draw-control-method-14 (-> self draw) (-> self node-list) (-> self skel)) + (collide-shape-method-46 (-> self control)) + (none) ) ;; definition for function target-calc-camera-pos @@ -2751,7 +2694,7 @@ ) ) ) - (vector-lerp! s5-0 (the-as vector a1-3) (the-as vector a2-2) f0-12) + (vector-lerp! s5-0 a1-3 a2-2 f0-12) ) ) (set! f28-0 (vector-length s5-0)) diff --git a/goal_src/jak2/engine/target/target.gc b/goal_src/jak2/engine/target/target.gc index 9e7334481e..385782742a 100644 --- a/goal_src/jak2/engine/target/target.gc +++ b/goal_src/jak2/engine/target/target.gc @@ -7,6 +7,8 @@ ;; DECOMP BEGINS +;; definition for function target-falling-trans +;; WARN: Return type mismatch int vs none. (defbehavior target-falling-trans target ((arg0 symbol) (arg1 time-frame)) (if (want-to-darkjak?) (go target-darkjak-get-on 2) @@ -34,6 +36,7 @@ (none) ) +;; failed to figure out what this is: (defstate target-startup (target) :event target-standard-event-handler :code (behavior () @@ -45,6 +48,7 @@ :post target-no-move-post ) +;; failed to figure out what this is: (defstate target-stance (target) :event target-standard-event-handler :enter (behavior () @@ -144,6 +148,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-walk (target) :event target-walk-event-handler :enter (behavior () @@ -255,6 +260,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-turn-around (target) :event target-standard-event-handler :enter (behavior () @@ -320,6 +326,7 @@ :post target-no-stick-post ) +;; failed to figure out what this is: (defstate target-slide-down (target) :event target-walk-event-handler :enter (behavior () @@ -366,6 +373,7 @@ :post target-post ) +;; definition for symbol *slide-down-mods*, type surface (define *slide-down-mods* (new 'static 'surface :name 'run :turnv 131072.0 @@ -398,6 +406,7 @@ ) ) +;; definition for symbol *slide-jump-mods*, type surface (define *slide-jump-mods* (new 'static 'surface :name 'jump :turnv 32768.0 @@ -431,6 +440,7 @@ ) ) +;; 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 @@ -568,6 +578,8 @@ ) ) +;; definition for function init-var-jump +;; INFO: Used lq/sq (defbehavior init-var-jump target ((arg0 float) (arg1 float) (arg2 symbol) (arg3 symbol) (arg4 vector) (arg5 float)) (when (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)) @@ -621,7 +633,7 @@ (let ((v1-55 (new-stack-vector0))) (let ((f0-19 (vector-dot (-> self control dynam gravity-normal) arg4))) 0.0 - (vector-! v1-55 arg4 (the-as vector (vector-float*! v1-55 (-> self control dynam gravity-normal) f0-19))) + (vector-! v1-55 arg4 (vector-float*! v1-55 (-> self control dynam gravity-normal) f0-19)) ) (let* ((f0-20 (vector-length v1-55)) (f1-16 f0-20) @@ -633,8 +645,8 @@ ) (vector+! arg4 - (the-as vector (vector-float*! arg4 (-> self control dynam gravity-normal) f2-13)) - (the-as vector (vector-float*! v1-55 v1-55 (/ f0-20 f1-16))) + (vector-float*! arg4 (-> self control dynam gravity-normal) f2-13) + (vector-float*! v1-55 v1-55 (/ f0-20 f1-16)) ) ) ) @@ -646,6 +658,8 @@ ) ) +;; definition for function mod-var-jump +;; INFO: Used lq/sq (defbehavior mod-var-jump target ((arg0 symbol) (arg1 symbol) (arg2 symbol) (arg3 vector)) (local-vars (v0-1 vector)) (let ((f0-1 (* 0.033333335 (the float (- (-> self clock frame-counter) (-> self state-time)))))) @@ -662,7 +676,7 @@ ) (let ((f1-5 (vector-dot (-> self control dynam gravity-normal) arg3))) 0.0 - (vector-! s4-0 arg3 (the-as vector (vector-float*! s4-0 (-> self control dynam gravity-normal) f1-5))) + (vector-! s4-0 arg3 (vector-float*! s4-0 (-> self control dynam gravity-normal) f1-5)) ) (let* ((f30-0 (vector-length s4-0)) (f28-0 f30-0) @@ -681,8 +695,8 @@ ) (vector+! arg3 - (the-as vector (vector-float*! arg3 (-> self control dynam gravity-normal) f0-7)) - (the-as vector (vector-float*! s4-0 s4-0 (/ f30-0 f28-0))) + (vector-float*! arg3 (-> self control dynam gravity-normal) f0-7) + (vector-float*! s4-0 s4-0 (/ f30-0 f28-0)) ) ) ) @@ -722,6 +736,7 @@ ) ) +;; definition for symbol *duck-mods*, type surface (define *duck-mods* (new 'static 'surface :name 'duck @@ -775,6 +790,7 @@ ) ) +;; failed to figure out what this is: (defstate target-duck-stance (target) :event target-standard-event-handler :enter (behavior ((arg0 symbol)) @@ -946,6 +962,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-duck-walk (target) :event target-standard-event-handler :enter (behavior ((arg0 symbol)) @@ -1066,6 +1083,8 @@ :post target-post ) +;; definition for function target-jump-top-anim +;; WARN: Return type mismatch int vs none. (defbehavior target-jump-top-anim target () (let ((gp-0 (top-anim-joint-control-method-11 (-> self skel top-anim) 0))) (when gp-0 @@ -1087,6 +1106,7 @@ (none) ) +;; failed to figure out what this is: (defstate target-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 surface)) @@ -1316,6 +1336,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-jump-forward (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float)) @@ -1377,6 +1398,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-double-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float)) @@ -1513,6 +1535,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-high-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 object)) @@ -1604,6 +1627,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-duck-high-jump (target) :event target-standard-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1655,6 +1679,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-duck-high-jump-jump (target) :event target-jump-event-handler :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) @@ -1802,6 +1827,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-falling (target) :event target-jump-event-handler :enter (behavior ((arg0 symbol)) @@ -1859,6 +1885,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-hit-ground (target) :event target-walk-event-handler :enter (behavior ((arg0 symbol)) @@ -2025,6 +2052,7 @@ :post target-post ) +;; definition for symbol *attack-mods*, type surface (define *attack-mods* (new 'static 'surface :name 'attack :tiltv 65536.0 @@ -2068,6 +2096,7 @@ ) ) +;; failed to figure out what this is: (let ((v1-25 (copy *attack-mods* 'global))) (set! (-> v1-25 flags) (surface-flag attack spin gun-turn-fast)) (set! (-> v1-25 mult-hook) (lambda :behavior target @@ -2086,6 +2115,7 @@ (set! *attack-end-mods* v1-25) ) +;; 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 @@ -2346,6 +2376,7 @@ :post target-post ) +;; definition for symbol *run-attack-mods*, type surface (define *run-attack-mods* (new 'static 'surface :name 'punch :tiltv 32768.0 @@ -2372,6 +2403,7 @@ ) ) +;; 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 @@ -2521,19 +2553,15 @@ (f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-11 - (-> self control transv) - (the-as vector (vector-float*! v1-11 (-> self control dynam gravity-normal) f0-3)) - ) + (vector-! v1-11 (-> self control transv) (vector-float*! v1-11 (-> self control dynam gravity-normal) f0-3)) (let* ((f1-3 (vector-length v1-11)) (f2-0 f1-3) (f0-4 (fmin 0.0 f0-3)) ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-4)) - (the-as vector (vector-float*! v1-11 v1-11 (/ f1-3 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-4) + (vector-float*! v1-11 v1-11 (/ f1-3 f2-0)) ) ) ) @@ -2873,6 +2901,7 @@ :post target-post ) +;; definition for symbol *jump-attack-mods*, type surface (define *jump-attack-mods* (new 'static 'surface :name 'attack @@ -2923,6 +2952,7 @@ ) ) +;; 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))) @@ -2950,11 +2980,7 @@ (let ((v1-14 (new-stack-vector0))) (let ((f0-4 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-14 - (-> self control transv) - (the-as vector (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-4)) - ) + (vector-! v1-14 (-> self control transv) (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-4)) ) (let* ((f0-5 (vector-length v1-14)) (f1-2 f0-5) @@ -2962,8 +2988,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0)) - (the-as vector (vector-float*! v1-14 v1-14 (/ f0-5 f1-2))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-14 v1-14 (/ f0-5 f1-2)) ) ) ) @@ -2995,11 +3021,7 @@ (let ((v1-33 (new-stack-vector0))) (let ((f1-11 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-33 - (-> self control transv) - (the-as vector (vector-float*! v1-33 (-> self control dynam gravity-normal) f1-11)) - ) + (vector-! v1-33 (-> self control transv) (vector-float*! v1-33 (-> self control dynam gravity-normal) f1-11)) ) (let* ((f1-12 (vector-length v1-33)) (f2-7 f1-12) @@ -3007,8 +3029,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-12)) - (the-as vector (vector-float*! v1-33 v1-33 (/ f1-12 f2-7))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-12) + (vector-float*! v1-33 v1-33 (/ f1-12 f2-7)) ) ) ) @@ -3083,11 +3105,13 @@ :post target-post ) +;; failed to figure out what this is: (let ((v1-32 (copy *turn-around-mods* 'global))) (set! (-> v1-32 flags) (surface-flag attack gun-inactive)) (set! *uppercut-mods* v1-32) ) +;; definition for symbol *uppercut-jump-mods*, type surface (define *uppercut-jump-mods* (new 'static 'surface :name 'uppercut :turnvv 18204.445 @@ -3129,6 +3153,7 @@ ) ) +;; failed to figure out what this is: (defstate target-attack-uppercut (target) :event target-dangerous-event-handler :enter (behavior ((arg0 float) (arg1 float)) @@ -3250,6 +3275,7 @@ :post target-post ) +;; 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 @@ -3263,11 +3289,7 @@ (let ((v1-7 (new-stack-vector0))) (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-7 - (-> self control transv) - (the-as vector (vector-float*! v1-7 (-> self control dynam gravity-normal) f0-1)) - ) + (vector-! v1-7 (-> self control transv) (vector-float*! v1-7 (-> self control dynam gravity-normal) f0-1)) ) (let* ((f0-2 (vector-length v1-7)) (f1-1 f0-2) @@ -3279,8 +3301,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3)) - (the-as vector (vector-float*! v1-7 v1-7 (/ f0-2 f1-1))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3) + (vector-float*! v1-7 v1-7 (/ f0-2 f1-1)) ) ) ) @@ -3446,6 +3468,7 @@ :post target-post ) +;; failed to figure out what this is: (defstate target-flop (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v1-0 symbol)) @@ -3504,11 +3527,7 @@ (let ((v1-33 (new-stack-vector0))) (let ((f0-7 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-33 - (-> self control transv) - (the-as vector (vector-float*! v1-33 (-> self control dynam gravity-normal) f0-7)) - ) + (vector-! v1-33 (-> self control transv) (vector-float*! v1-33 (-> self control dynam gravity-normal) f0-7)) ) (let* ((f0-8 (vector-length v1-33)) (f1-3 f0-8) @@ -3516,8 +3535,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0)) - (the-as vector (vector-float*! v1-33 v1-33 (/ f0-8 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-33 v1-33 (/ f0-8 f1-3)) ) ) ) @@ -3670,7 +3689,7 @@ (vector-! v1-58 (-> self control unknown-vector44) - (the-as vector (vector-float*! v1-58 (-> self control dynam gravity-normal) f0-17)) + (vector-float*! v1-58 (-> self control dynam gravity-normal) f0-17) ) ) (let* ((f0-18 (vector-length v1-58)) @@ -3679,22 +3698,15 @@ ) (vector+! (-> self control unknown-vector44) - (the-as - vector - (vector-float*! (-> self control unknown-vector44) (-> self control dynam gravity-normal) f2-0) - ) - (the-as vector (vector-float*! v1-58 v1-58 (/ f0-18 f1-1))) + (vector-float*! (-> self control unknown-vector44) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-58 v1-58 (/ f0-18 f1-1)) ) ) ) (let ((v1-59 (new-stack-vector0))) (let ((f0-21 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-59 - (-> self control transv) - (the-as vector (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-21)) - ) + (vector-! v1-59 (-> self control transv) (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-21)) ) (let* ((f0-22 (vector-length v1-59)) (f1-3 f0-22) @@ -3702,8 +3714,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2)) - (the-as vector (vector-float*! v1-59 v1-59 (/ f0-22 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! v1-59 v1-59 (/ f0-22 f1-3)) ) ) ) @@ -3724,11 +3736,7 @@ (f0-33 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-77 - (-> self control transv) - (the-as vector (vector-float*! v1-77 (-> self control dynam gravity-normal) f0-33)) - ) + (vector-! v1-77 (-> self control transv) (vector-float*! v1-77 (-> self control dynam gravity-normal) f0-33)) (let* ((f2-3 (vector-length v1-77)) (f1-7 f2-3) ) @@ -3737,8 +3745,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-33)) - (the-as vector (vector-float*! v1-77 v1-77 (/ f2-3 f1-7))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-33) + (vector-float*! v1-77 v1-77 (/ f2-3 f1-7)) ) ) ) @@ -3765,6 +3773,7 @@ :post target-post ) +;; 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)) (cond @@ -3867,6 +3876,7 @@ :post target-post ) +;; 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) @@ -4043,6 +4053,7 @@ :post target-post ) +;; 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 @@ -4168,19 +4179,15 @@ (f0-19 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-59 - (-> self control transv) - (the-as vector (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-19)) - ) + (vector-! v1-59 (-> self control transv) (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-19)) (let* ((f2-0 (vector-length v1-59)) (f1-7 f2-0) (f2-1 (* 0.9 f2-0)) ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-19)) - (the-as vector (vector-float*! v1-59 v1-59 (/ f2-1 f1-7))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-19) + (vector-float*! v1-59 v1-59 (/ f2-1 f1-7)) ) ) ) @@ -4237,4 +4244,4 @@ (none) ) :post target-post - ) \ No newline at end of file + ) diff --git a/test/decompiler/reference/jak2/engine/anim/joint-mod_REF.gc b/test/decompiler/reference/jak2/engine/anim/joint-mod_REF.gc index 926b1d0722..93a82bdcd6 100644 --- a/test/decompiler/reference/jak2/engine/anim/joint-mod_REF.gc +++ b/test/decompiler/reference/jak2/engine/anim/joint-mod_REF.gc @@ -185,10 +185,7 @@ (vector-! s3-1 s2-3 - (the-as - vector - (vector-float*! (new 'stack-no-clear 'vector) sv-832 (/ (vector-dot sv-832 s2-3) (vector-dot sv-832 sv-832))) - ) + (vector-float*! (new 'stack-no-clear 'vector) sv-832 (/ (vector-dot sv-832 s2-3) (vector-dot sv-832 sv-832))) ) ) ) @@ -340,11 +337,7 @@ (sv-168 vector) (sv-172 symbol) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) + (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) @@ -485,19 +478,9 @@ ) (set! (-> sv-16 trans x) (-> v1-97 y)) (let ((f0-60 (* (-> sv-16 trans y) (-> sv-16 flex-blend)))) - (when (!= f0-60 0.0) - (let ((a0-86 (-> s5-0 trans))) - (.lvf vf2 (&-> s4-1 quad)) - (.lvf vf1 (&-> v1-97 quad)) - (let ((v1-98 f0-60)) - (.mov vf3 v1-98) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-86 quad) vf4) + (if (!= f0-60 0.0) + (vector+float*! (-> s5-0 trans) v1-97 s4-1 f0-60) ) - ) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/camera/cam-debug_REF.gc b/test/decompiler/reference/jak2/engine/camera/cam-debug_REF.gc index c94c020f69..9b1bd76110 100644 --- a/test/decompiler/reference/jak2/engine/camera/cam-debug_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/cam-debug_REF.gc @@ -789,91 +789,23 @@ ;; definition for function camera-fov-draw (defun camera-fov-draw ((arg0 int) (arg1 int) (arg2 vector) (arg3 float) (arg4 float) (arg5 vector4w)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-1 (the-as (object vector) (-> (the-as cam-dbg-scratch #x70000000) fov-vv)))) - (let ((t2-1 arg2) - (t3-0 arg1) - (f0-0 arg3) - ) - (.lvf vf2 t3-0) - (.lvf vf1 (&-> t2-1 quad)) - (let ((t2-2 f0-0)) - (.mov vf3 t2-2) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-1) 0)) vf4) - ) - (let ((v1-3 (the-as object (-> (the-as cam-dbg-scratch #x70000000) fov-vv 1)))) - (let ((t2-4 arg2) - (t3-1 arg0) - (f0-1 arg3) - ) - (.lvf vf2 t3-1) - (.lvf vf1 (&-> t2-4 quad)) - (let ((a3-1 f0-1)) - (.mov vf3 a3-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-3) 0)) vf4) - ) - (let ((v1-5 (the-as object (-> (the-as cam-dbg-scratch #x70000000) fov-vv 2)))) - (let ((a3-3 arg2) - (f0-2 arg4) - ) - (.lvf vf2 arg0) - (.lvf vf1 (&-> a3-3 quad)) - (let ((a0-1 f0-2)) - (.mov vf3 a0-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-5) 0)) vf4) - ) - (let ((v1-7 (the-as object (-> (the-as cam-dbg-scratch #x70000000) fov-vv 3)))) - (let ((a0-3 arg2) - (f0-3 arg4) - ) - (.lvf vf2 arg1) - (.lvf vf1 (&-> a0-3 quad)) - (let ((a0-4 f0-3)) - (.mov vf3 a0-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> (the-as (pointer vector) v1-7) 0)) vf4) - ) - (camera-line-setup arg5) - (camera-line-draw - (the-as vector (-> (the-as cam-dbg-scratch #x70000000) fov-vv)) - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 1) - ) - (camera-line-draw - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 1) - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 2) - ) - (camera-line-draw - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 2) - (-> (the-as cam-dbg-scratch #x70000000) fov-vv 3) - ) - (none) + (vector+float*! + (the-as vector (-> (the-as cam-dbg-scratch #x70000000) fov-vv)) + arg2 + (the-as vector arg1) + arg3 ) + (vector+float*! (the-as vector (the-as (pointer vector) (+ 352 #x70000000))) arg2 (the-as vector arg0) arg3) + (vector+float*! (the-as vector (+ 368 #x70000000)) arg2 (the-as vector arg0) arg4) + (vector+float*! (the-as vector (+ 384 #x70000000)) arg2 (the-as vector arg1) arg4) + (camera-line-setup arg5) + (camera-line-draw (the-as vector (+ 336 #x70000000)) (the-as vector (+ 352 #x70000000))) + (camera-line-draw + (the-as vector (&+ (the-as (pointer vector) 352) #x70000000)) + (the-as vector (+ 368 #x70000000)) + ) + (camera-line-draw (the-as vector (+ 368 #x70000000)) (the-as vector (+ 384 #x70000000))) + (none) ) ;; definition for function camera-fov-frame @@ -1187,349 +1119,190 @@ ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. (defun camera-slave-debug ((arg0 camera-slave)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when *display-camera-marks* - (if (-> *setting-control* cam-current use-point-of-interest) - (camera-cross - (new 'static 'vector :y 1024.0) - (new 'static 'vector :z 1024.0) - (-> *setting-control* cam-current point-of-interest) - (new 'static 'vector4w :x #x80 :z #x80 :w #x80) - (meters 0.25) - ) - ) - (let ((f30-0 (* 0.5 (-> *camera-combiner* fov)))) - (camera-fov-frame - (-> *camera-combiner* inv-camera-rot) - (camera-pos) - f30-0 - 0.75 - 1.0 - (new 'static 'vector4w :z #xff :w #x80) + (when *display-camera-marks* + (if (-> *setting-control* cam-current use-point-of-interest) + (camera-cross + (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + (-> *setting-control* cam-current point-of-interest) + (new 'static 'vector4w :x #x80 :z #x80 :w #x80) + (meters 0.25) ) ) - (cond - ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) - (let ((f0-2 (* 0.5 (-> arg0 fov)))) - (camera-fov-frame - (the-as matrix (-> *camera-combiner* tracking)) - (-> arg0 trans) - f0-2 - 0.75 - 1.0 - (new 'static 'vector4w :y #xff :w #x80) - ) - ) - ) - (else - (let ((f0-4 (* 0.5 (-> arg0 fov)))) - (camera-fov-frame - (the-as matrix (-> arg0 tracking)) - (-> arg0 trans) - f0-4 - 0.75 - 1.0 - (new 'static 'vector4w :y #xff :w #x80) - ) - ) - ) - ) - (debug-draw-spline (-> arg0 position-spline)) - (let ((s5-1 (new-stack-vector0))) - (let ((s4-1 (new-stack-vector0))) - (new-stack-matrix0) - (cond - ((and (-> arg0 next-state) - (let ((v1-23 (-> arg0 next-state name))) - (or (= v1-23 'cam-fixed) (= v1-23 'cam-eye) (= v1-23 'cam-point-watch) (= v1-23 'cam-free-floating)) - ) - ) - (let ((v1-24 s5-1)) - (let ((a0-11 (-> arg0 trans)) - (a1-8 (-> *camera* local-down)) - (f0-5 4096.0) - ) - (.lvf vf2 (&-> a1-8 quad)) - (.lvf vf1 (&-> a0-11 quad)) - (let ((a0-12 f0-5)) - (.mov vf3 a0-12) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-24 quad) vf4) - ) - (camera-line (-> arg0 trans) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) - (camera-line - (-> *camera-combiner* tracking follow-pt) - (-> arg0 trans) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (let ((v1-28 s5-1)) - (let ((a0-17 (-> *camera-combiner* tracking follow-pt)) - (a1-12 (-> *camera* local-down)) - (f0-6 4096.0) - ) - (.lvf vf2 (&-> a1-12 quad)) - (.lvf vf1 (&-> a0-17 quad)) - (let ((a0-18 f0-6)) - (.mov vf3 a0-18) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-28 quad) vf4) - ) - (camera-line - (-> *camera-combiner* tracking follow-pt) - s5-1 - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - ) - (else - (camera-line - (-> arg0 tracking follow-pt) - (-> arg0 trans) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (let ((v1-31 s5-1)) - (let ((a0-21 (-> arg0 tracking follow-pt)) - (a1-16 (-> *camera* local-down)) - (f0-7 4096.0) - ) - (.lvf vf2 (&-> a1-16 quad)) - (.lvf vf1 (&-> a0-21 quad)) - (let ((a0-22 f0-7)) - (.mov vf3 a0-22) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-31 quad) vf4) - ) - (camera-line (-> arg0 tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - ) - (set! (-> s4-1 quad) (-> arg0 trans quad)) - (cond - ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) - (let ((v1-35 s5-1)) - (let ((a0-27 s4-1) - (a1-19 (-> *camera-combiner* tracking)) - (f0-8 2048.0) - ) - (.lvf vf2 (&-> a1-19 inv-mat vector 0 quad)) - (.lvf vf1 (&-> a0-27 quad)) - (let ((a0-28 f0-8)) - (.mov vf3 a0-28) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-35 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) - (let ((v1-36 s5-1)) - (let ((a0-30 s4-1) - (a1-22 (&-> *camera-combiner* stack 176)) - (f0-9 2048.0) - ) - (.lvf vf2 a1-22) - (.lvf vf1 (&-> a0-30 quad)) - (let ((a0-31 f0-9)) - (.mov vf3 a0-31) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-36 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) - (let ((v1-37 s5-1)) - (let ((a0-33 s4-1) - (a1-25 (&-> *camera-combiner* stack 192)) - (f0-10 2048.0) - ) - (.lvf vf2 a1-25) - (.lvf vf1 (&-> a0-33 quad)) - (let ((a0-34 f0-10)) - (.mov vf3 a0-34) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-37 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) - ) - (else - (let ((v1-39 s5-1)) - (let ((a0-36 s4-1) - (a1-27 (-> arg0 tracking)) - (f0-11 2048.0) - ) - (.lvf vf2 (&-> a1-27 inv-mat vector 0 quad)) - (.lvf vf1 (&-> a0-36 quad)) - (let ((a0-37 f0-11)) - (.mov vf3 a0-37) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-39 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) - (let ((v1-40 s5-1)) - (let ((a0-39 s4-1) - (a1-29 (&-> arg0 stack 96)) - (f0-12 2048.0) - ) - (.lvf vf2 a1-29) - (.lvf vf1 (&-> a0-39 quad)) - (let ((a0-40 f0-12)) - (.mov vf3 a0-40) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-40 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) - (let ((v1-41 s5-1)) - (let ((a0-42 s4-1) - (a1-31 (&-> arg0 stack 112)) - (f0-13 2048.0) - ) - (.lvf vf2 a1-31) - (.lvf vf1 (&-> a0-42 quad)) - (let ((a0-43 f0-13)) - (.mov vf3 a0-43) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-41 quad) vf4) - ) - (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) - ) - ) - ) - (vector--float*! - s5-1 - (-> *camera* tpos-curr) - (-> *camera* local-down) - (-> *setting-control* cam-current foot-offset) - ) - (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) - (vector--float*! - s5-1 - (-> *camera* tpos-curr) - (-> *camera* local-down) - (-> *setting-control* cam-current head-offset) - ) - (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) - ) - (cond - ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-string)) - (camera-sphere (-> arg0 desired-pos) 512.0 (new 'static 'vector4w :z #xff :w #x80)) - (camera-line-rel (-> *camera* tpos-curr-adj) (-> arg0 view-flat) (new 'static 'vector4w :z #xff :w #x80)) - (camera-line - (-> arg0 string-trans) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) - (new 'static 'vector4w :y #xff :w #x80) - ) - (camera-line - (-> arg0 los-last-pos) - (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) - (new 'static 'vector4w :x #xff :w #x80) - ) - ) - ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-circular)) - (let ((a1-45 (new-stack-vector0))) - (let ((v1-66 a1-45)) - (let ((a0-55 (-> arg0 pivot-pt)) - (a2-35 (-> *camera* local-down)) - (f0-16 4096.0) - ) - (.lvf vf2 (&-> a2-35 quad)) - (.lvf vf1 (&-> a0-55 quad)) - (let ((a0-56 f0-16)) - (.mov vf3 a0-56) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-66 quad) vf4) - ) - (camera-line (-> arg0 pivot-pt) a1-45 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - (camera-line (-> arg0 pivot-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - ) - ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-spline)) - (let ((s5-2 (new 'stack 'curve)) - (s4-2 (res-lump-struct (-> arg0 cam-entity) 'spline-offset structure)) - ) - (if (not s4-2) - (set! s4-2 (new-stack-vector0)) - ) - (when (get-curve-data! (-> arg0 cam-entity) s5-2 'campath 'campath-k -1000000000.0) - (let ((s3-0 (new-stack-vector0)) - (s2-0 (new-stack-vector0)) - (gp-1 (res-lump-data (-> arg0 cam-entity) 'campoints pointer :time 1.0)) - ) - (curve-get-pos! s2-0 0.0 s5-2) - (vector+! s2-0 s2-0 (the-as vector s4-2)) - (dotimes (s1-0 8) - (set! (-> s3-0 quad) (-> s2-0 quad)) - (curve-get-pos! s2-0 (* 0.125 (the float (+ s1-0 1))) s5-2) - (vector+! s2-0 s2-0 (the-as vector s4-2)) - (camera-line s3-0 s2-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) - ) - (dotimes (s1-1 (-> s5-2 num-cverts)) - (vector+! s3-0 (-> s5-2 cverts s1-1) (the-as vector s4-2)) - (vector+! s2-0 (-> s5-2 cverts (mod (+ s1-1 1) (-> s5-2 num-cverts))) (the-as vector s4-2)) - (camera-line s3-0 s2-0 (new 'static 'vector4w :y #xff :z #xff :w #x80)) - ) - (if gp-1 - (camera-line - (the-as vector (&+ gp-1 0)) - (the-as vector (&+ gp-1 16)) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - (camera-line - (-> s5-2 cverts 0) - (-> s5-2 cverts (+ (-> s5-2 num-cverts) -1)) - (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) - ) - ) - ) - ) - ) - ) + (let ((f30-0 (* 0.5 (-> *camera-combiner* fov)))) + (camera-fov-frame + (-> *camera-combiner* inv-camera-rot) + (camera-pos) + f30-0 + 0.75 + 1.0 + (new 'static 'vector4w :z #xff :w #x80) ) ) - 0 - (none) + (cond + ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) + (let ((f0-2 (* 0.5 (-> arg0 fov)))) + (camera-fov-frame + (the-as matrix (-> *camera-combiner* tracking)) + (-> arg0 trans) + f0-2 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80) + ) + ) + ) + (else + (let ((f0-4 (* 0.5 (-> arg0 fov)))) + (camera-fov-frame + (the-as matrix (-> arg0 tracking)) + (-> arg0 trans) + f0-4 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80) + ) + ) + ) + ) + (debug-draw-spline (-> arg0 position-spline)) + (let ((s5-1 (new-stack-vector0))) + (let ((s4-1 (new-stack-vector0))) + (new-stack-matrix0) + (cond + ((and (-> arg0 next-state) + (let ((v1-23 (-> arg0 next-state name))) + (or (= v1-23 'cam-fixed) (= v1-23 'cam-eye) (= v1-23 'cam-point-watch) (= v1-23 'cam-free-floating)) + ) + ) + (vector+float*! s5-1 (-> arg0 trans) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 trans) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) + (camera-line + (-> *camera-combiner* tracking follow-pt) + (-> arg0 trans) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (vector+float*! s5-1 (-> *camera-combiner* tracking follow-pt) (-> *camera* local-down) 4096.0) + (camera-line + (-> *camera-combiner* tracking follow-pt) + s5-1 + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + ) + (else + (camera-line + (-> arg0 tracking follow-pt) + (-> arg0 trans) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (vector+float*! s5-1 (-> arg0 tracking follow-pt) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ) + (set! (-> s4-1 quad) (-> arg0 trans quad)) + (cond + ((= (-> arg0 blend-to-type) (camera-blend-to-type unknown-2)) + (vector+float*! s5-1 s4-1 (the-as vector (-> *camera-combiner* tracking)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> *camera-combiner* stack 176)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> *camera-combiner* stack 192)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) + ) + (else + (vector+float*! s5-1 s4-1 (the-as vector (-> arg0 tracking)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> arg0 stack 96)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s5-1 s4-1 (the-as vector (&-> arg0 stack 112)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) + ) + ) + ) + (vector--float*! + s5-1 + (-> *camera* tpos-curr) + (-> *camera* local-down) + (-> *setting-control* cam-current foot-offset) + ) + (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) + (vector--float*! + s5-1 + (-> *camera* tpos-curr) + (-> *camera* local-down) + (-> *setting-control* cam-current head-offset) + ) + (camera-sphere s5-1 512.0 (new 'static 'vector4w :y #xff :w #x80)) + ) + (cond + ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-string)) + (camera-sphere (-> arg0 desired-pos) 512.0 (new 'static 'vector4w :z #xff :w #x80)) + (camera-line-rel (-> *camera* tpos-curr-adj) (-> arg0 view-flat) (new 'static 'vector4w :z #xff :w #x80)) + (camera-line + (-> arg0 string-trans) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :y #xff :w #x80) + ) + (camera-line + (-> arg0 los-last-pos) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :x #xff :w #x80) + ) + ) + ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-circular)) + (let ((a1-45 (new-stack-vector0))) + (vector+float*! a1-45 (-> arg0 pivot-pt) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 pivot-pt) a1-45 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + (camera-line (-> arg0 pivot-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ((and (-> arg0 next-state) (= (-> arg0 next-state name) 'cam-spline)) + (let ((s5-2 (new 'stack 'curve)) + (s4-2 (res-lump-struct (-> arg0 cam-entity) 'spline-offset structure)) + ) + (if (not s4-2) + (set! s4-2 (new-stack-vector0)) + ) + (when (get-curve-data! (-> arg0 cam-entity) s5-2 'campath 'campath-k -1000000000.0) + (let ((s3-0 (new-stack-vector0)) + (s2-0 (new-stack-vector0)) + (gp-1 (res-lump-data (-> arg0 cam-entity) 'campoints pointer :time 1.0)) + ) + (curve-get-pos! s2-0 0.0 s5-2) + (vector+! s2-0 s2-0 (the-as vector s4-2)) + (dotimes (s1-0 8) + (set! (-> s3-0 quad) (-> s2-0 quad)) + (curve-get-pos! s2-0 (* 0.125 (the float (+ s1-0 1))) s5-2) + (vector+! s2-0 s2-0 (the-as vector s4-2)) + (camera-line s3-0 s2-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) + ) + (dotimes (s1-1 (-> s5-2 num-cverts)) + (vector+! s3-0 (-> s5-2 cverts s1-1) (the-as vector s4-2)) + (vector+! s2-0 (-> s5-2 cverts (mod (+ s1-1 1) (-> s5-2 num-cverts))) (the-as vector s4-2)) + (camera-line s3-0 s2-0 (new 'static 'vector4w :y #xff :z #xff :w #x80)) + ) + (if gp-1 + (camera-line + (the-as vector (&+ gp-1 0)) + (the-as vector (&+ gp-1 16)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (camera-line + (-> s5-2 cverts 0) + (-> s5-2 cverts (+ (-> s5-2 num-cverts) -1)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + ) + ) + ) + ) + ) + ) ) + 0 + (none) ) ;; definition for function master-draw-coordinates @@ -1930,117 +1703,63 @@ ;; definition for function camera-master-debug ;; WARN: Return type mismatch int vs none. (defun camera-master-debug ((arg0 camera-master)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when *display-cam-other* - (let ((f0-1 (* 0.5 (-> *camera-other-fov* data)))) - (camera-fov-frame - *camera-other-matrix* - *camera-other-trans* - f0-1 - 0.75 - 1.0 - (new 'static 'vector4w :x #xff :w #x80) - ) - ) - (camera-line *camera-other-trans* *camera-other-root* (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-0 *camera-other-trans*) - ) - (let ((v1-5 s4-0)) - (let ((a0-3 s5-0) - (a1-3 (-> *camera-other-matrix* vector)) - (f0-2 2048.0) - ) - (.lvf vf2 (&-> a1-3 0 quad)) - (.lvf vf1 (&-> a0-3 quad)) - (let ((a0-4 f0-2)) - (.mov vf3 a0-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-5 quad) vf4) - ) - (camera-line s5-0 s4-0 (new 'static 'vector4w :x #xff :w #x80)) - (let ((v1-6 s4-0)) - (let ((a0-6 s5-0) - (a1-6 (-> *camera-other-matrix* vector 1)) - (f0-3 2048.0) - ) - (.lvf vf2 (&-> a1-6 quad)) - (.lvf vf1 (&-> a0-6 quad)) - (let ((a0-7 f0-3)) - (.mov vf3 a0-7) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-6 quad) vf4) - ) - (camera-line s5-0 s4-0 (new 'static 'vector4w :y #xff :w #x80)) - (let ((v1-7 s4-0)) - (let ((a0-9 s5-0) - (a1-9 (-> *camera-other-matrix* vector 2)) - (f0-4 2048.0) - ) - (.lvf vf2 (&-> a1-9 quad)) - (.lvf vf1 (&-> a0-9 quad)) - (let ((a0-10 f0-4)) - (.mov vf3 a0-10) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-7 quad) vf4) - ) - (camera-line s5-0 s4-0 (new 'static 'vector4w :z #xff :w #x80)) + (when *display-cam-other* + (let ((f0-1 (* 0.5 (-> *camera-other-fov* data)))) + (camera-fov-frame + *camera-other-matrix* + *camera-other-trans* + f0-1 + 0.75 + 1.0 + (new 'static 'vector4w :x #xff :w #x80) ) ) - (when *display-camera-last-attacker* - (format *stdcon* "last attacker '") - (let ((v1-13 (handle->process (-> last-try-to-look-at-data who)))) - (if v1-13 - (format *stdcon* "~S" (-> v1-13 name)) - ) - ) - (format *stdcon* "'~%") + (camera-line *camera-other-trans* *camera-other-root* (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s5-0 *camera-other-trans*) + ) + (vector+float*! s4-0 s5-0 (the-as vector (-> *camera-other-matrix* vector)) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 1) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 2) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :z #xff :w #x80)) ) - (when *display-camera-old-stats* - (format - *stdcon* - "old ~S cpu ~D old vu ~D (go to menu before comparing)~%" - *camera-old-level* - *camera-old-cpu* - *camera-old-vu* - ) - (format *stdcon* "old tfrag-mem ~D~%" (sar *camera-old-tfrag-bytes* 10)) - (format *stdcon* "~S~%" *camera-old-stat-string-tfrag-near*) - (format *stdcon* "~S~%" *camera-old-stat-string-tfrag*) - (format *stdcon* "~S~%" *camera-old-stat-string-total*) - ) - (if *display-cam-collide-history* - (cam-collision-record-draw) - ) - (if *display-cam-master-marks* - (debug-draw-spline (-> arg0 target-spline)) - ) - (if *display-xyz-axes* - (master-draw-coordinates (the-as vector #f)) - ) - (cam-debug-draw-tris) - 0 - (none) ) + (when *display-camera-last-attacker* + (format *stdcon* "last attacker '") + (let ((v1-16 (handle->process (-> last-try-to-look-at-data who)))) + (if v1-16 + (format *stdcon* "~S" (-> v1-16 name)) + ) + ) + (format *stdcon* "'~%") + ) + (when *display-camera-old-stats* + (format + *stdcon* + "old ~S cpu ~D old vu ~D (go to menu before comparing)~%" + *camera-old-level* + *camera-old-cpu* + *camera-old-vu* + ) + (format *stdcon* "old tfrag-mem ~D~%" (sar *camera-old-tfrag-bytes* 10)) + (format *stdcon* "~S~%" *camera-old-stat-string-tfrag-near*) + (format *stdcon* "~S~%" *camera-old-stat-string-tfrag*) + (format *stdcon* "~S~%" *camera-old-stat-string-total*) + ) + (if *display-cam-collide-history* + (cam-collision-record-draw) + ) + (if *display-cam-master-marks* + (debug-draw-spline (-> arg0 target-spline)) + ) + (if *display-xyz-axes* + (master-draw-coordinates (the-as vector #f)) + ) + (cam-debug-draw-tris) + 0 + (none) ) ;; definition for function debug-set-camera-pos-rot! diff --git a/test/decompiler/reference/jak2/engine/camera/cam-interface_REF.gc b/test/decompiler/reference/jak2/engine/camera/cam-interface_REF.gc index fcd3bb018e..1f1c0a99e3 100644 --- a/test/decompiler/reference/jak2/engine/camera/cam-interface_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/cam-interface_REF.gc @@ -3,34 +3,10 @@ ;; definition for function position-in-front-of-camera! (defun position-in-front-of-camera! ((arg0 vector) (arg1 float) (arg2 float)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (vector-float*! arg0 (-> *math-camera* inv-camera-rot vector 2) arg1) - (let ((v1-2 arg0)) - (let ((a1-1 arg0) - (a3-3 (-> *math-camera* inv-camera-rot vector 1)) - (f0-1 arg2) - ) - (.lvf vf2 (&-> a3-3 quad)) - (.lvf vf1 (&-> a1-1 quad)) - (let ((a1-2 f0-1)) - (.mov vf3 a1-2) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-2 quad) vf4) - ) - (vector+! arg0 arg0 (-> *math-camera* trans)) - arg0 - ) + (vector-float*! arg0 (-> *math-camera* inv-camera-rot vector 2) arg1) + (vector+float*! arg0 arg0 (-> *math-camera* inv-camera-rot vector 1) arg2) + (vector+! arg0 arg0 (-> *math-camera* trans)) + arg0 ) ;; definition for function position-in-front-of-screen! @@ -38,8 +14,8 @@ (let ((a2-1 (vector-negate! (new 'stack-no-clear 'vector) (-> *math-camera* inv-camera-rot vector 2))) (a1-3 (vector-float*! (new 'stack-no-clear 'vector) (-> *math-camera* inv-camera-rot vector 2) arg1)) ) - (vector+! (the-as vector a1-3) (the-as vector a1-3) (-> *math-camera* trans)) - (reverse-transform-point! arg0 (the-as vector a1-3) a2-1 arg2) + (vector+! a1-3 a1-3 (-> *math-camera* trans)) + (reverse-transform-point! arg0 a1-3 a2-1 arg2) ) arg0 ) diff --git a/test/decompiler/reference/jak2/engine/camera/cam-layout_REF.gc b/test/decompiler/reference/jak2/engine/camera/cam-layout_REF.gc index 89d00ed047..cca9b38ea2 100644 --- a/test/decompiler/reference/jak2/engine/camera/cam-layout_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/cam-layout_REF.gc @@ -368,228 +368,165 @@ (sv-272 int) (sv-288 int) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 0)) - (until #f - (set! sv-16 (new 'static 'res-tag)) - (let ((s3-0 (the-as (inline-array vector) ((method-of-type res-lump get-property-data) - arg0 - arg1 - 'exact - (the float s4-0) - (the-as pointer #f) - (& sv-16) - *res-static-buf* - ) - ) - ) + (let ((s4-0 0)) + (until #f + (set! sv-16 (new 'static 'res-tag)) + (let ((s3-0 (the-as (inline-array vector) ((method-of-type res-lump get-property-data) + arg0 + arg1 + 'exact + (the float s4-0) + (the-as pointer #f) + (& sv-16) + *res-static-buf* + ) + ) + ) + ) + (cond + (s3-0 + (when (>= *volume-descriptor-current* 100) + (format 0 "ERROR : camera editing out of volume descriptors~%") + (return #f) ) - (cond - (s3-0 - (when (>= *volume-descriptor-current* 100) - (format 0 "ERROR : camera editing out of volume descriptors~%") - (return #f) - ) - (let ((s2-0 (-> *volume-descriptor* pos-vol *volume-descriptor-current*))) - (set! (-> s2-0 volume-type) arg1) - (set! (-> s2-0 point-count) 0) - (set! (-> s2-0 first-point) (the-as (pointer vector) (-> *volume-point* data *volume-point-current*))) - (set! (-> s2-0 normal-count) 0) - (set! (-> s2-0 first-normal) (the-as (pointer vector) (-> *volume-normal* data *volume-normal-current*))) - (set! *volume-descriptor-current* (+ *volume-descriptor-current* 1)) - (+! (-> self num-volumes) 1) - (dotimes (s1-0 (the-as int (-> sv-16 elt-count))) - (set! sv-192 (new 'stack-no-clear 'vector)) - (set! (-> sv-192 quad) (the-as uint128 0)) - (set! sv-208 (new 'stack-no-clear 'vector)) - (set! (-> sv-208 quad) (the-as uint128 0)) - (set! sv-224 (new 'stack-no-clear 'vector)) - (set! (-> sv-224 quad) (the-as uint128 0)) - (set! sv-240 (new 'stack-no-clear 'vector)) - (set! (-> sv-240 quad) (the-as uint128 0)) - 0.0 - 0.0 - 0.0 - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (let ((s0-0 (new-stack-vector0))) - (set! sv-256 0) - (set! sv-272 0) - (while (< sv-272 (the-as int (-> sv-16 elt-count))) - (when (!= s1-0 sv-272) - (vector-float*! sv-192 (-> s3-0 sv-272) (-> s3-0 sv-272 w)) - (vector-cross! sv-208 (-> s3-0 sv-272) (-> s3-0 s1-0)) - (vector-normalize! sv-208 1.0) - (vector-cross! sv-224 sv-208 (-> s3-0 sv-272)) - (vector-normalize! sv-224 1.0) - (let ((f0-6 (cam-layout-intersect-dist (-> s3-0 s1-0) sv-192 sv-224))) - (when (!= f0-6 409600000.0) - (let ((v1-40 sv-240)) - (let ((a0-18 sv-192)) - (.lvf vf2 (&-> sv-224 quad)) - (.lvf vf1 (&-> a0-18 quad)) - ) - (let ((a0-19 f0-6)) - (.mov vf3 a0-19) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-40 quad) vf4) - ) - (set! sv-160 (new-stack-vector0)) - (set! sv-164 0.0) - (set! sv-168 0) - (set! sv-176 (new-stack-vector0)) - (set! (-> sv-160 quad) (-> sv-240 quad)) - (set! sv-288 0) - (while (< sv-288 (the-as int (-> sv-16 elt-count))) - (when (and (!= sv-288 s1-0) (!= sv-288 sv-272)) - (let ((f0-8 (cam-layout-intersect-dist (-> s3-0 sv-288) sv-160 sv-208))) - (cond - ((= f0-8 409600000.0) - ) - ((zero? sv-168) - (let ((v1-54 sv-160)) - (let ((a0-25 sv-160)) - (.lvf vf2 (&-> sv-208 quad)) - (.lvf vf1 (&-> a0-25 quad)) - ) - (let ((a0-26 f0-8)) - (.mov vf3 a0-26) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-54 quad) vf4) - ) - (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) - (set! sv-164 8192000.0) - (set! sv-168 1) - ) - ((begin (vector-float*! sv-240 sv-208 f0-8) (>= (vector-dot sv-240 sv-176) 0.0)) - ) - ((>= (vector-dot sv-240 (-> s3-0 sv-288)) 0.0) - (when (< (fabs f0-8) (fabs (the-as float sv-164))) - (set! sv-164 f0-8) - (set! sv-168 (+ sv-168 1)) - ) - ) - (else - (let ((v1-71 sv-160)) - (let ((a0-34 sv-160) - (a1-17 sv-208) - (f1-8 f0-8) - ) - (.lvf vf2 (&-> a1-17 quad)) - (.lvf vf1 (&-> a0-34 quad)) - (let ((a0-35 f1-8)) - (.mov vf3 a0-35) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-71 quad) vf4) - ) - (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) - (set! sv-168 (+ sv-168 1)) - (if (< (fabs f0-8) (fabs (the-as float sv-164))) - (set! sv-164 (- (the-as float sv-164) f0-8)) - (set! sv-164 0.0) - ) - ) - ) - ) - ) - (set! sv-288 (+ sv-288 1)) - ) - (cond - ((zero? sv-168) - ) - ((= (the-as float sv-164) 0.0) - ) - (else - (dotimes (v1-88 (the-as int (-> sv-16 elt-count))) - (when (and (!= v1-88 s1-0) (!= v1-88 sv-272)) - (if (< 4096.0 (- (vector-dot sv-160 (-> s3-0 v1-88)) (-> s3-0 v1-88 w))) - (goto cfg-47) - ) - ) - ) - (let ((v1-92 sv-240)) - (let ((a0-58 sv-160) - (a1-20 sv-208) - (f0-14 sv-164) - ) - (.lvf vf2 (&-> a1-20 quad)) - (.lvf vf1 (&-> a0-58 quad)) - (let ((a0-59 (the-as float f0-14))) - (.mov vf3 a0-59) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-92 quad) vf4) - ) + (let ((s2-0 (-> *volume-descriptor* pos-vol *volume-descriptor-current*))) + (set! (-> s2-0 volume-type) arg1) + (set! (-> s2-0 point-count) 0) + (set! (-> s2-0 first-point) (the-as (pointer vector) (-> *volume-point* data *volume-point-current*))) + (set! (-> s2-0 normal-count) 0) + (set! (-> s2-0 first-normal) (the-as (pointer vector) (-> *volume-normal* data *volume-normal-current*))) + (set! *volume-descriptor-current* (+ *volume-descriptor-current* 1)) + (+! (-> self num-volumes) 1) + (dotimes (s1-0 (the-as int (-> sv-16 elt-count))) + (set! sv-192 (new 'stack-no-clear 'vector)) + (set! (-> sv-192 quad) (the-as uint128 0)) + (set! sv-208 (new 'stack-no-clear 'vector)) + (set! (-> sv-208 quad) (the-as uint128 0)) + (set! sv-224 (new 'stack-no-clear 'vector)) + (set! (-> sv-224 quad) (the-as uint128 0)) + (set! sv-240 (new 'stack-no-clear 'vector)) + (set! (-> sv-240 quad) (the-as uint128 0)) + 0.0 + 0.0 + 0.0 + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (let ((s0-0 (new-stack-vector0))) + (set! sv-256 0) + (set! sv-272 0) + (while (< sv-272 (the-as int (-> sv-16 elt-count))) + (when (!= s1-0 sv-272) + (vector-float*! sv-192 (-> s3-0 sv-272) (-> s3-0 sv-272 w)) + (vector-cross! sv-208 (-> s3-0 sv-272) (-> s3-0 s1-0)) + (vector-normalize! sv-208 1.0) + (vector-cross! sv-224 sv-208 (-> s3-0 sv-272)) + (vector-normalize! sv-224 1.0) + (let ((f0-6 (cam-layout-intersect-dist (-> s3-0 s1-0) sv-192 sv-224))) + (when (!= f0-6 409600000.0) + (vector+float*! sv-240 sv-192 sv-224 f0-6) + (set! sv-160 (new-stack-vector0)) + (set! sv-164 0.0) + (set! sv-168 0) + (set! sv-176 (new-stack-vector0)) + (set! (-> sv-160 quad) (-> sv-240 quad)) + (set! sv-288 0) + (while (< sv-288 (the-as int (-> sv-16 elt-count))) + (when (and (!= sv-288 s1-0) (!= sv-288 sv-272)) + (let ((f0-8 (cam-layout-intersect-dist (-> s3-0 sv-288) sv-160 sv-208))) (cond - ((>= *volume-point-current* 999) - (format 0 "ERROR : camera editing out of volume points~%") + ((= f0-8 409600000.0) + ) + ((zero? sv-168) + (vector+float*! sv-160 sv-160 sv-208 f0-8) + (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) + (set! sv-164 8192000.0) + (set! sv-168 1) + ) + ((begin (vector-float*! sv-240 sv-208 f0-8) (>= (vector-dot sv-240 sv-176) 0.0)) + ) + ((>= (vector-dot sv-240 (-> s3-0 sv-288)) 0.0) + (when (< (fabs f0-8) (fabs (the-as float sv-164))) + (set! sv-164 f0-8) + (set! sv-168 (+ sv-168 1)) + ) ) (else - (set! (-> *volume-point* data *volume-point-current* quad) (-> sv-160 quad)) - (set! (-> *volume-point* data (+ *volume-point-current* 1) quad) (-> sv-240 quad)) - (set! *volume-point-current* (+ *volume-point-current* 2)) - (+! (-> s2-0 point-count) 2) + (vector+float*! sv-160 sv-160 sv-208 f0-8) + (set! (-> sv-176 quad) (-> s3-0 sv-288 quad)) + (set! sv-168 (+ sv-168 1)) + (if (< (fabs f0-8) (fabs (the-as float sv-164))) + (set! sv-164 (- (the-as float sv-164) f0-8)) + (set! sv-164 0.0) + ) ) ) - (vector+! s0-0 s0-0 sv-160) - (vector+! s0-0 s0-0 sv-240) - (set! sv-256 (+ sv-256 2)) - sv-256 ) ) + (set! sv-288 (+ sv-288 1)) + ) + (cond + ((zero? sv-168) + ) + ((= (the-as float sv-164) 0.0) + ) + (else + (dotimes (v1-91 (the-as int (-> sv-16 elt-count))) + (when (and (!= v1-91 s1-0) (!= v1-91 sv-272)) + (if (< 4096.0 (- (vector-dot sv-160 (-> s3-0 v1-91)) (-> s3-0 v1-91 w))) + (goto cfg-47) + ) + ) + ) + (vector+float*! sv-240 sv-160 sv-208 (the-as float sv-164)) + (cond + ((>= *volume-point-current* 999) + (format 0 "ERROR : camera editing out of volume points~%") + ) + (else + (set! (-> *volume-point* data *volume-point-current* quad) (-> sv-160 quad)) + (set! (-> *volume-point* data (+ *volume-point-current* 1) quad) (-> sv-240 quad)) + (set! *volume-point-current* (+ *volume-point-current* 2)) + (+! (-> s2-0 point-count) 2) + ) + ) + (vector+! s0-0 s0-0 sv-160) + (vector+! s0-0 s0-0 sv-240) + (set! sv-256 (+ sv-256 2)) + sv-256 + ) ) ) ) - (label cfg-47) - (set! sv-272 (+ sv-272 1)) ) - (when (nonzero? sv-256) - (vector-float*! s0-0 s0-0 (/ 1.0 (the float sv-256))) - (cond - ((>= *volume-normal-current* 599) - (format 0 "ERROR : camera editing out of volume normals~%") - ) - (else - (set! (-> *volume-normal* data *volume-normal-current* quad) (-> s0-0 quad)) - (set! (-> *volume-normal* data (+ *volume-normal-current* 1) quad) (-> s3-0 s1-0 quad)) - (set! *volume-normal-current* (+ *volume-normal-current* 2)) - (set! (-> s2-0 normal-count) (+ (-> s2-0 normal-count) 2)) - ) + (label cfg-47) + (set! sv-272 (+ sv-272 1)) + ) + (when (nonzero? sv-256) + (vector-float*! s0-0 s0-0 (/ 1.0 (the float sv-256))) + (cond + ((>= *volume-normal-current* 599) + (format 0 "ERROR : camera editing out of volume normals~%") + ) + (else + (set! (-> *volume-normal* data *volume-normal-current* quad) (-> s0-0 quad)) + (set! (-> *volume-normal* data (+ *volume-normal-current* 1) quad) (-> s3-0 s1-0 quad)) + (set! *volume-normal-current* (+ *volume-normal-current* 2)) + (set! (-> s2-0 normal-count) (+ (-> s2-0 normal-count) 2)) ) ) ) ) ) ) - (else - (return #f) - ) + ) + (else + (return #f) ) ) - (+! s4-0 1) ) + (+! s4-0 1) ) - #f ) + #f ) ;; definition for function cam-layout-entity-volume-info @@ -641,52 +578,30 @@ ;; definition for function v-slrp! ;; INFO: Used lq/sq (defun v-slrp! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s2-0 (new-stack-vector0)) - (s1-0 (new-stack-vector0)) - (s0-0 (new-stack-vector0)) - ) - 0.0 - 0.0 - 0.0 - 0.0 - (cond - ((< 1.0 arg3) - (set! arg3 1.0) - ) - ((< arg3 0.0) - (set! arg3 0.0) - ) - ) - (vector-normalize-copy! s2-0 arg1 1.0) - (vector-normalize-copy! s1-0 arg2 1.0) - (vector-cross! s0-0 s2-0 s1-0) - (let* ((f30-0 (vector-length s0-0)) - (f28-0 (asin f30-0)) - ) - (vector-float*! arg0 arg1 (/ (sin (* (- 1.0 arg3) f28-0)) f30-0)) - (let ((s3-1 arg0)) - (let ((f0-14 (/ (sin (* arg3 f28-0)) f30-0))) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg0 quad)) - (let ((v1-9 f0-14)) - (.mov vf3 v1-9) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s3-1 quad) vf4) - s3-1 - ) + (let ((s2-0 (new-stack-vector0)) + (s1-0 (new-stack-vector0)) + (s0-0 (new-stack-vector0)) ) + 0.0 + 0.0 + 0.0 + 0.0 + (cond + ((< 1.0 arg3) + (set! arg3 1.0) + ) + ((< arg3 0.0) + (set! arg3 0.0) + ) + ) + (vector-normalize-copy! s2-0 arg1 1.0) + (vector-normalize-copy! s1-0 arg2 1.0) + (vector-cross! s0-0 s2-0 s1-0) + (let* ((f30-0 (vector-length s0-0)) + (f28-0 (asin f30-0)) + ) + (vector-float*! arg0 arg1 (/ (sin (* (- 1.0 arg3) f28-0)) f30-0)) + (vector+float*! arg0 arg0 arg2 (/ (sin (* arg3 f28-0)) f30-0)) ) ) ) @@ -1122,134 +1037,113 @@ ;; INFO: Used lq/sq (defbehavior clmf-pos-rot cam-layout ((arg0 symbol) (arg1 symbol)) (local-vars (s2-0 structure) (s3-1 vector) (sv-192 matrix)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cam-layout-print 16 *camera-layout-message-ypos* "x/z pos: left stick, down: l1, up: r1") + (cam-layout-print 16 *camera-layout-message-ypos* "x/z pos: left stick, down: l1, up: r1") + (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) + (when (and arg1 (nonzero? arg1)) + (cam-layout-print 16 *camera-layout-message-ypos* "x/y rot: right stick") (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) - (when (and arg1 (nonzero? arg1)) - (cam-layout-print 16 *camera-layout-message-ypos* "x/y rot: right stick") - (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) - (cam-layout-print 16 *camera-layout-message-ypos* "z rot: press left stick & move right") - (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) - ) - (let ((s5-0 (new-stack-vector0)) - (s4-0 (new-stack-vector0)) - ) - (set! s3-1 - (cond - ((or (zero? arg0) (not arg0)) - (the-as vector #f) - ) - (else - (if (not (res-lump-struct (-> self cam-entity) arg0 structure)) - (add-data! - (-> self cam-entity) - (the-as - res-tag - (make-u128 - (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int vector) 32) 32)) - (the-as - res-tag - (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg0) 32) 32)) - ) - ) - ) - (the-as pointer (new 'static 'vector4w)) - ) - ) - (set! s3-1 (res-lump-struct (-> self cam-entity) arg0 vector)) - (when (and (not s3-1) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) - (clear *temp-string*) - (format *temp-string* "ERROR : can't add ~A" 'vector) - (cam-layout-print 120 100 *temp-string*) - ) - s3-1 - ) - ) - ) - (set! s2-0 - (cond - ((or (zero? arg1) (not arg1)) - (the-as structure #f) - ) - (else - (if (not (res-lump-struct (-> self cam-entity) arg1 structure)) - (add-data! - (-> self cam-entity) - (the-as - res-tag - (make-u128 - (the-as res-tag (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int quaternion) 32) 32))) - (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg1) 32) 32)) - ) - ) - (the-as pointer (quaternion-identity! (new 'static 'quaternion))) - ) - ) - (set! s2-0 (res-lump-struct (-> self cam-entity) arg1 structure)) - (when (and (not s2-0) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) - (clear *temp-string*) - (format *temp-string* "ERROR : can't add ~A" 'quaternion) - (cam-layout-print 120 100 *temp-string*) - ) - s2-0 - ) - ) - ) - (let ((s1-1 (new 'stack-no-clear 'matrix))) - (set! sv-192 (new 'stack-no-clear 'matrix)) - (let ((s0-1 (new 'stack-no-clear 'vector))) - (if (not s3-1) - (return #f) - ) - (clmf-input s5-0 s4-0 0) - (let ((v1-37 s3-1)) - (let ((f0-0 409.6)) - (.lvf vf2 (&-> s4-0 quad)) - (.lvf vf1 (&-> s3-1 quad)) - (let ((a0-34 f0-0)) - (.mov vf3 a0-34) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-37 quad) vf4) - ) + (cam-layout-print 16 *camera-layout-message-ypos* "z rot: press left stick & move right") + (set! *camera-layout-message-ypos* (+ *camera-layout-message-ypos* 14)) + ) + (let ((s5-0 (new-stack-vector0)) + (s4-0 (new-stack-vector0)) + ) + (set! s3-1 (cond - ((not arg1) - (the-as quaternion #f) - ) - ((zero? arg1) - (the-as quaternion #f) + ((or (zero? arg0) (not arg0)) + (the-as vector #f) ) (else - (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) sv-192) - (vector-float*! s5-0 s5-0 100.0) - (matrix-rotate-x! s1-1 (- (-> s5-0 x))) - (matrix*! sv-192 s1-1 sv-192) - (matrix-rotate-y! s1-1 (-> s5-0 y)) - (matrix*! sv-192 sv-192 s1-1) - (matrix-rotate-z! s1-1 (- (-> s5-0 z))) - (matrix*! sv-192 s1-1 sv-192) - (matrix->quaternion (the-as quaternion s0-1) sv-192) - (quaternion-inverse! (the-as quaternion s2-0) (the-as quaternion (-> self cam-entity connect))) - (quaternion*! (the-as quaternion s2-0) (the-as quaternion s0-1) (the-as quaternion s2-0)) - (quaternion-normalize! (the-as quaternion s2-0)) + (if (not (res-lump-struct (-> self cam-entity) arg0 structure)) + (add-data! + (-> self cam-entity) + (the-as + res-tag + (make-u128 + (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int vector) 32) 32)) + (the-as + res-tag + (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg0) 32) 32)) + ) + ) + ) + (the-as pointer (new 'static 'vector4w)) + ) + ) + (set! s3-1 (res-lump-struct (-> self cam-entity) arg0 vector)) + (when (and (not s3-1) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) + (clear *temp-string*) + (format *temp-string* "ERROR : can't add ~A" 'vector) + (cam-layout-print 120 100 *temp-string*) + ) + s3-1 ) ) ) + (set! s2-0 + (cond + ((or (zero? arg1) (not arg1)) + (the-as structure #f) + ) + (else + (if (not (res-lump-struct (-> self cam-entity) arg1 structure)) + (add-data! + (-> self cam-entity) + (the-as + res-tag + (make-u128 + (the-as res-tag (logior (shl (shl #x8001 16) 32) (shr (shl (the-as int quaternion) 32) 32))) + (logior (shl (-> (new 'static 'array uint64 1 #xce6e6b28) 0) 32) (shr (shl (the-as int arg1) 32) 32)) + ) + ) + (the-as pointer (quaternion-identity! (new 'static 'quaternion))) + ) + ) + (set! s2-0 (res-lump-struct (-> self cam-entity) arg1 structure)) + (when (and (not s2-0) (logtest? (-> *display* real-frame-clock integral-frame-counter) 8)) + (clear *temp-string*) + (format *temp-string* "ERROR : can't add ~A" 'quaternion) + (cam-layout-print 120 100 *temp-string*) + ) + s2-0 + ) + ) + ) + (let ((s1-1 (new 'stack-no-clear 'matrix))) + (set! sv-192 (new 'stack-no-clear 'matrix)) + (let ((s0-1 (new 'stack-no-clear 'vector))) + (if (not s3-1) + (return #f) + ) + (clmf-input s5-0 s4-0 0) + (vector+float*! s3-1 s3-1 s4-0 409.6) + (cond + ((not arg1) + (the-as quaternion #f) + ) + ((zero? arg1) + (the-as quaternion #f) + ) + (else + (cam-slave-get-rot (the-as entity-actor (-> self cam-entity)) sv-192) + (vector-float*! s5-0 s5-0 100.0) + (matrix-rotate-x! s1-1 (- (-> s5-0 x))) + (matrix*! sv-192 s1-1 sv-192) + (matrix-rotate-y! s1-1 (-> s5-0 y)) + (matrix*! sv-192 sv-192 s1-1) + (matrix-rotate-z! s1-1 (- (-> s5-0 z))) + (matrix*! sv-192 s1-1 sv-192) + (matrix->quaternion (the-as quaternion s0-1) sv-192) + (quaternion-inverse! (the-as quaternion s2-0) (the-as quaternion (-> self cam-entity connect))) + (quaternion*! (the-as quaternion s2-0) (the-as quaternion s0-1) (the-as quaternion s2-0)) + (quaternion-normalize! (the-as quaternion s2-0)) + ) + ) ) ) - (set-setting! 'master-options 'set 0 32) - #t ) + (set-setting! 'master-options 'set 0 32) + #t ) ;; definition for function clmf-next-volume 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 5ade3bbf14..ddda1bb7fe 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 @@ -174,243 +174,239 @@ ) ;; definition for function cam-free-floating-input -;; WARN: Return type mismatch uint vs vector. (defun cam-free-floating-input ((arg0 vector) (arg1 vector) (arg2 symbol) (arg3 int)) (with-pp - (the-as - vector - (when *camera* - (if (-> *setting-control* cam-current mouse-input) - (cam-mouse-input arg0 arg1) - ) - (let ((s3-0 (and (-> *setting-control* cam-current cpad1-skip-buttons) (= arg3 1)))) - (when (not s3-0) - (when (and (!= *master-mode* 'menu) (not *cam-layout*)) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 x) - (set! (-> arg0 x) - (- (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 6)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 triangle) - (+! (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 4)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 square) - (+! (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 7)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 circle) - (set! (-> arg0 y) - (- (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 5)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - ) - (when arg2 - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 l2) - (+! (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 10)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 r2) - (set! (-> arg0 z) - (- (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 11)) - 0.0 - 32.0 - 230.0 - (-> *CAM_FREE-bank* rot-speed) - ) - ) - ) - ) - ) - ) - ) - (when (nonzero? arg3) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 left) - (+! (-> arg1 x) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 1)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 right) - (set! (-> arg1 x) - (- (-> arg1 x) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 0)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 up) - (+! (-> arg1 z) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 2)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 down) - (set! (-> arg1 z) - (- (-> arg1 z) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 3)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - ) - ) - (cond - ((logtest? (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG)) - ) - ((cpad-hold? arg3 r2) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 r1) - (+! (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 9)) + (when *camera* + (if (-> *setting-control* cam-current mouse-input) + (cam-mouse-input arg0 arg1) + ) + (let ((s3-0 (and (-> *setting-control* cam-current cpad1-skip-buttons) (= arg3 1)))) + (when (not s3-0) + (when (and (!= *master-mode* 'menu) (not *cam-layout*)) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 x) + (set! (-> arg0 x) + (- (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 6)) 0.0 32.0 230.0 - (* 0.2 (-> *CAM_FREE-bank* speed)) + (-> *CAM_FREE-bank* rot-speed) ) - ) - ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 l1) - (set! (-> arg1 y) - (- (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input - (the-as int (-> *cpad-list* cpads arg3 abutton 8)) - 0.0 - 32.0 - 230.0 - (* 0.2 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) - ) - ) - (else - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 r1) - (+! (-> arg1 y) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 9)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) ) ) - ) - ) - (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) - (if (cpad-hold? arg3 l1) - (set! (-> arg1 y) - (- (-> arg1 y) - (+ (-> *CAM_FREE-bank* speed) - (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 8)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) - ) - ) - ) - ) - ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 triangle) + (+! (-> arg0 x) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 4)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 square) + (+! (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 7)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 circle) + (set! (-> arg0 y) + (- (-> arg0 y) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 5)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) ) ) - (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) - (let ((f28-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 leftx)) 128.0 48.0 110.0 -1.0)) - (f30-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 lefty)) 128.0 48.0 110.0 -1.0)) - (f26-0 (analog-input (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) - (f0-60 (analog-input (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) + (when arg2 + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 l2) + (+! (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 10)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) ) - (cond - ((and (not s3-0) (cpad-hold? arg3 r2)) - (cond - ((cpad-hold? arg3 l2) - (set! (-> arg0 y) (- (-> arg0 y) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) - (set! (-> arg0 x) (- (-> arg0 x) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) - ) - (else - (set! (-> arg0 y) (- (-> arg0 y) (* (- f26-0) (-> *CAM_FREE-bank* rot-speed)))) - (set! (-> arg0 x) (- (-> arg0 x) (* (- f0-60) (-> *CAM_FREE-bank* rot-speed)))) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 r2) + (set! (-> arg0 z) + (- (-> arg0 z) (+ (-> *CAM_FREE-bank* rot-speed) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 11)) + 0.0 + 32.0 + 230.0 + (-> *CAM_FREE-bank* rot-speed) + ) + ) + ) + ) + ) + ) + ) + (when (nonzero? arg3) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 left) + (+! (-> arg1 x) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 1)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 right) + (set! (-> arg1 x) + (- (-> arg1 x) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 0)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 up) + (+! (-> arg1 z) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 2)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 down) + (set! (-> arg1 z) + (- (-> arg1 z) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 3)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + ) + ) + ) + (cond + ((logtest? (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG)) + ) + ((cpad-hold? arg3 r2) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 r1) + (+! (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 9)) + 0.0 + 32.0 + 230.0 + (* 0.2 (-> *CAM_FREE-bank* speed)) + ) + ) ) - ) - (+! (-> arg1 x) (* 0.2 (-> *CAM_FREE-bank* speed) f28-14)) - (+! (-> arg1 z) (* 0.2 (-> *CAM_FREE-bank* speed) f30-14)) ) - ((and (not s3-0) (cpad-hold? arg3 l2)) - (+! (-> arg1 x) (* f28-14 (-> *CAM_FREE-bank* speed))) - (+! (-> arg1 y) (* f0-60 (-> *CAM_FREE-bank* speed))) - (+! (-> arg1 z) (* f30-14 (-> *CAM_FREE-bank* speed))) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 l1) + (set! (-> arg1 y) + (- (-> arg1 y) (+ (* 0.2 (-> *CAM_FREE-bank* speed)) (analog-input + (the-as int (-> *cpad-list* cpads arg3 abutton 8)) + 0.0 + 32.0 + 230.0 + (* 0.2 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) ) - (else - (set! (-> arg0 y) (- (-> arg0 y) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) - (set! (-> arg0 x) (- (-> arg0 x) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) - (+! (-> arg1 x) (* 2.0 (-> *CAM_FREE-bank* speed) f28-14)) - (+! (-> arg1 z) (* 2.0 (-> *CAM_FREE-bank* speed) f30-14)) + ) + ) + (else + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 r1) + (+! (-> arg1 y) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 9)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) ) + ) + (when (logtest? (-> *camera* settings master-options) (cam-master-options READ_BUTTONS)) + (if (cpad-hold? arg3 l1) + (set! (-> arg1 y) + (- (-> arg1 y) + (+ (-> *CAM_FREE-bank* speed) + (analog-input (the-as int (-> *cpad-list* cpads arg3 abutton 8)) 0.0 32.0 230.0 (-> *CAM_FREE-bank* speed)) + ) + ) + ) + ) + ) + ) + ) + (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) + (let ((f28-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 leftx)) 128.0 48.0 110.0 -1.0)) + (f30-14 (analog-input (the-as int (-> *cpad-list* cpads arg3 lefty)) 128.0 48.0 110.0 -1.0)) + (f26-0 (analog-input (the-as int (-> *cpad-list* cpads arg3 rightx)) 128.0 48.0 110.0 -1.0)) + (f0-60 (analog-input (the-as int (-> *cpad-list* cpads arg3 righty)) 128.0 48.0 110.0 -1.0)) + ) + (cond + ((and (not s3-0) (cpad-hold? arg3 r2)) + (cond + ((cpad-hold? arg3 l2) + (set! (-> arg0 y) (- (-> arg0 y) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) + (set! (-> arg0 x) (- (-> arg0 x) (* 0.5 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) + ) + (else + (set! (-> arg0 y) (- (-> arg0 y) (* (- f26-0) (-> *CAM_FREE-bank* rot-speed)))) + (set! (-> arg0 x) (- (-> arg0 x) (* (- f0-60) (-> *CAM_FREE-bank* rot-speed)))) + ) + ) + (+! (-> arg1 x) (* 0.2 (-> *CAM_FREE-bank* speed) f28-14)) + (+! (-> arg1 z) (* 0.2 (-> *CAM_FREE-bank* speed) f30-14)) + ) + ((and (not s3-0) (cpad-hold? arg3 l2)) + (+! (-> arg1 x) (* f28-14 (-> *CAM_FREE-bank* speed))) + (+! (-> arg1 y) (* f0-60 (-> *CAM_FREE-bank* speed))) + (+! (-> arg1 z) (* f30-14 (-> *CAM_FREE-bank* speed))) + ) + (else + (set! (-> arg0 y) (- (-> arg0 y) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f26-0)))) + (set! (-> arg0 x) (- (-> arg0 x) (* 2.0 (-> *CAM_FREE-bank* rot-speed) (- f0-60)))) + (+! (-> arg1 x) (* 2.0 (-> *CAM_FREE-bank* speed) f28-14)) + (+! (-> arg1 z) (* 2.0 (-> *CAM_FREE-bank* speed) f30-14)) ) ) ) ) - (vector-float*! arg0 arg0 (-> pp clock time-adjust-ratio)) - (vector-float*! arg1 arg1 (-> pp clock time-adjust-ratio)) ) + (vector-float*! arg0 arg0 (-> pp clock time-adjust-ratio)) + (vector-float*! arg1 arg1 (-> pp clock time-adjust-ratio)) ) ) ) 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 43cd9820bc..6b7a53b9d6 100644 --- a/test/decompiler/reference/jak2/engine/camera/cam-states_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/cam-states_REF.gc @@ -513,7 +513,7 @@ (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* settings target-height))) ) ) - (vector-! (-> self trans) (-> *camera* tpos-curr) (the-as vector v1-3)) + (vector-! (-> self trans) (-> *camera* tpos-curr) v1-3) ) (set! (-> self blend-from-type) (the-as uint 0)) (set! (-> self blend-to-type) (camera-blend-to-type unknown-0)) @@ -538,148 +538,125 @@ (none) ) :code (behavior () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (-> self clock frame-counter))) - (until #f - (when (not (paused?)) - (let ((s4-0 (vector-reset! (new-stack-vector0))) - (s5-0 (new-stack-matrix0)) - ) - (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) - (let ((f30-0 (analog-input - (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) - 0.0 - 48.0 - 110.0 - -1.0 - ) + (let ((gp-0 (-> self clock frame-counter))) + (until #f + (when (not (paused?)) + (let ((s4-0 (vector-reset! (new-stack-vector0))) + (s5-0 (new-stack-matrix0)) + ) + (when (zero? (logand (-> *camera* settings master-options) (cam-master-options IGNORE_ANALOG))) + (let ((f30-0 (analog-input + (the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx))) + 0.0 + 48.0 + 110.0 + -1.0 ) - (f0-0 (analog-input - (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) - 0.0 - 48.0 - 110.0 - -1.0 - ) - ) - ) - (set! (-> s4-0 y) (- (-> s4-0 y) (* (- f30-0) (-> *CAM_EYE-bank* rot-speed)))) - (set! (-> s4-0 x) (- (-> s4-0 x) (* (- f0-0) (-> *CAM_EYE-bank* rot-speed)))) - ) - ) - (cond - ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 x)) - (set! (-> s4-0 x) (-> *CAM_EYE-bank* rot-speed)) - ) - ((< (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) - (set! (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) - ) - ) - (cond - ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 y)) - (set! (-> s4-0 y) (-> *CAM_EYE-bank* rot-speed)) - ) - ((< (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) - (set! (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) - ) - ) - (cond - ((and (= (-> s4-0 x) 0.0) (= (-> s4-0 y) 0.0)) - (set! gp-0 (-> self clock frame-counter)) - ) - (else - (let ((v1-39 (min 10 (max 1 (- (-> self clock frame-counter) gp-0))))) - (vector-float*! s4-0 s4-0 (* 0.1 (the float v1-39))) - ) - ) - ) - (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) - (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) - (when (zero? (logand (-> self options) 8)) - (if (< (vector-dot (the-as vector (&-> self stack 96)) (-> *camera* local-down)) 0.0) - (forward-down->inv-matrix - (the-as matrix (-> self tracking)) - (the-as vector (&-> self stack 112)) - (-> *camera* local-down) - ) - (forward-down->inv-matrix - (the-as matrix (-> self tracking)) - (the-as vector (&-> self stack 112)) - (vector-negate! (new-stack-vector0) (-> *camera* local-down)) - ) - ) - ) - (matrix-axis-angle! s5-0 (the-as vector (-> self tracking)) (- (-> s4-0 x))) - (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) - ) - (when (zero? (logand (-> self options) 8)) - (let ((f30-1 (vector-dot (-> *camera* local-down) (the-as vector (&-> self stack 112))))) - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (when (< (sin (-> *CAM_EYE-bank* max-degrees)) (fabs f30-1)) - (vector--float*! - (the-as vector (&-> self stack 112)) - (the-as vector (&-> self stack 112)) - (-> *camera* local-down) - f30-1 - ) - (vector-normalize! (the-as vector (&-> self stack 112)) (cos (-> *CAM_EYE-bank* max-degrees))) - (cond - ((< f30-1 0.0) - (vector--float*! - (the-as vector (&-> self stack 112)) - (the-as vector (&-> self stack 112)) - (-> *camera* local-down) - (sin (-> *CAM_EYE-bank* max-degrees)) - ) - ) - (else - (let ((s5-3 (&-> self stack 112))) - (let ((s4-3 (&-> self stack 112)) - (s3-2 (-> *camera* local-down)) - (f0-30 (sin (-> *CAM_EYE-bank* max-degrees))) - ) - (.lvf vf2 (&-> s3-2 quad)) - (.lvf vf1 s4-3) - (let ((v1-67 f0-30)) - (.mov vf3 v1-67) + ) + (f0-0 (analog-input + (the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty))) + 0.0 + 48.0 + 110.0 + -1.0 ) ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (the-as (pointer uint128) (&-> s5-3 0)) vf4) - ) - ) ) - (vector-cross! - (the-as vector (&-> self stack 96)) - (the-as vector (&-> self stack 112)) - (the-as vector (-> self tracking)) - ) - (set! (-> self tracking inv-mat vector 1 w) 0.0) + (set! (-> s4-0 y) (- (-> s4-0 y) (* (- f30-0) (-> *CAM_EYE-bank* rot-speed)))) + (set! (-> s4-0 x) (- (-> s4-0 x) (* (- f0-0) (-> *CAM_EYE-bank* rot-speed)))) + ) + ) + (cond + ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 x)) + (set! (-> s4-0 x) (-> *CAM_EYE-bank* rot-speed)) + ) + ((< (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) + (set! (-> s4-0 x) (- (-> *CAM_EYE-bank* rot-speed))) + ) + ) + (cond + ((< (-> *CAM_EYE-bank* rot-speed) (-> s4-0 y)) + (set! (-> s4-0 y) (-> *CAM_EYE-bank* rot-speed)) + ) + ((< (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) + (set! (-> s4-0 y) (- (-> *CAM_EYE-bank* rot-speed))) + ) + ) + (cond + ((and (= (-> s4-0 x) 0.0) (= (-> s4-0 y) 0.0)) + (set! gp-0 (-> self clock frame-counter)) + ) + (else + (let ((v1-39 (min 10 (max 1 (- (-> self clock frame-counter) gp-0))))) + (vector-float*! s4-0 s4-0 (* 0.1 (the float v1-39))) ) ) ) - ) - (let ((v1-71 - (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* settings target-height))) + (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) + (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) + (when (zero? (logand (-> self options) 8)) + (if (< (vector-dot (the-as vector (&-> self stack 96)) (-> *camera* local-down)) 0.0) + (forward-down->inv-matrix + (the-as matrix (-> self tracking)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + ) + (forward-down->inv-matrix + (the-as matrix (-> self tracking)) + (the-as vector (&-> self stack 112)) + (vector-negate! (new-stack-vector0) (-> *camera* local-down)) + ) ) - ) - (vector-! (-> self trans) (-> *camera* tpos-curr) (the-as vector v1-71)) + ) + (matrix-axis-angle! s5-0 (the-as vector (-> self tracking)) (- (-> s4-0 x))) + (matrix*! (the-as matrix (-> self tracking)) (the-as matrix (-> self tracking)) s5-0) + ) + (when (zero? (logand (-> self options) 8)) + (let ((f30-1 (vector-dot (-> *camera* local-down) (the-as vector (&-> self stack 112))))) + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (when (< (sin (-> *CAM_EYE-bank* max-degrees)) (fabs f30-1)) + (vector--float*! + (the-as vector (&-> self stack 112)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + f30-1 + ) + (vector-normalize! (the-as vector (&-> self stack 112)) (cos (-> *CAM_EYE-bank* max-degrees))) + (if (< f30-1 0.0) + (vector--float*! + (the-as vector (&-> self stack 112)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + (sin (-> *CAM_EYE-bank* max-degrees)) + ) + (vector+float*! + (the-as vector (&-> self stack 112)) + (the-as vector (&-> self stack 112)) + (-> *camera* local-down) + (sin (-> *CAM_EYE-bank* max-degrees)) + ) + ) + (vector-cross! + (the-as vector (&-> self stack 96)) + (the-as vector (&-> self stack 112)) + (the-as vector (-> self tracking)) + ) + (set! (-> self tracking inv-mat vector 1 w) 0.0) + ) + ) ) - (suspend) ) + (let ((v1-70 + (vector-float*! (new-stack-vector0) (-> *camera* local-down) (+ 1024.0 (-> *camera* settings target-height))) + ) + ) + (vector-! (-> self trans) (-> *camera* tpos-curr) v1-70) + ) + (suspend) ) - #f - (none) ) + #f + (none) ) ) @@ -4256,170 +4233,135 @@ ;; definition for function cam-string-move ;; INFO: Used lq/sq (defbehavior cam-string-move camera-slave () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (vector-! (-> self velocity) (-> self desired-pos) (-> self string-trans)) - (if *display-cam-los-debug* - (format *stdcon* "vel ~M~%" (vector-length (-> self velocity))) + (vector-! (-> self velocity) (-> self desired-pos) (-> self string-trans)) + (if *display-cam-los-debug* + (format *stdcon* "vel ~M~%" (vector-length (-> self velocity))) + ) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'vector)) ) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) + (vector-! s3-0 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) + (vector+float*! s5-0 (-> self velocity) s3-0 0.5) + (vector-normalize! s5-0 1.0) + (vector-normalize-copy! s4-0 (-> self view-flat) 1.0) + (vector-cross! gp-0 s4-0 s5-0) + (cond + ((and (< (vector-length (-> self velocity)) (-> *CAMERA-bank* min-detectable-velocity)) + (< (vector-length s3-0) (-> *CAMERA-bank* min-detectable-velocity)) + ) + (set! (-> self string-vel-dir) (the-as uint 0)) + 0 + ) + ((< (cos 5461.3335) (vector-dot (-> *camera* local-down) s5-0)) + (set! (-> self string-vel-dir) (the-as uint 4)) + ) + ((< (vector-dot (-> *camera* local-down) s5-0) (- (cos 5461.3335))) + (set! (-> self string-vel-dir) (the-as uint 3)) + ) + ((< (cos 5461.3335) (vector-dot s4-0 s5-0)) + (set! (-> self string-vel-dir) (the-as uint 6)) + ) + ((< (vector-dot s4-0 s5-0) (- (cos 5461.3335))) + (set! (-> self string-vel-dir) (the-as uint 5)) + ) + ((< (vector-dot (-> *camera* local-down) gp-0) 0.0) + (set! (-> self string-vel-dir) (the-as uint 1)) + ) + (else + (set! (-> self string-vel-dir) (the-as uint 2)) + ) + ) + ) + (let ((s5-1 (new 'stack-no-clear 'collide-query))) + 0.0 + (let ((f30-2 1.0) + (s4-1 (-> s5-1 move-dist)) + (gp-1 0) ) - (vector-! s3-0 (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)) - (let ((v1-7 s5-0)) - (let ((a0-4 (-> self velocity)) - (a1-5 s3-0) - (f0-0 0.5) + (let ((s3-1 (new 'stack-no-clear 'vector))) + (when *debug-segment* + (if (>= (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) + (cam-collision-record-save (-> self string-trans) (-> self velocity) -1 'no-hit self) + ) + ) + (while (and (< 0.01 f30-2) + (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (< gp-1 4)) + ) + (vector-float*! s4-1 (-> self velocity) f30-2) + (if *debug-segment* + (cam-collision-record-save (-> self string-trans) s4-1 gp-1 'normal self) + ) + (let ((f28-0 + (cond + ((logtest? (-> self options) 32) + (set! (-> s5-1 start-pos quad) (-> self string-trans quad)) + (let ((s2-0 s5-1)) + (set! (-> s2-0 radius) (-> *CAMERA-bank* collide-move-rad)) + (set! (-> s2-0 collide-with) (collide-spec backgnd obstacle hit-by-others-list camera-blocker pusher)) + (set! (-> s2-0 ignore-process0) #f) + (set! (-> s2-0 ignore-process1) #f) + (set! (-> s2-0 ignore-pat) (the-as pat-surface (camera-master-method-16 *camera* #f))) + (set! (-> s2-0 action-mask) (collide-action solid)) + ) + (fill-and-probe-using-line-sphere *collide-cache* s5-1) + ) + (else + -100000000.0 + ) + ) + ) + ) + (if *display-cam-los-debug* + (format *stdcon* "vp ~f vr ~f r ~f ta ~f~%" (vector-length s4-1) f30-2 (/ (vector-length s4-1) f30-2) f28-0) + ) + (cond + ((>= f28-0 0.0) + (let* ((f1-10 (fmax 0.01 (/ 40.96 (vector-length s4-1)))) + (f0-22 (fmax 0.0 (- f28-0 f1-10))) + ) + (vector+float*! (-> self string-trans) (-> self string-trans) s4-1 f0-22) + ) + (vector-! s3-1 (-> self string-trans) (-> s5-1 best-other-tri intersect)) + (vector-normalize! s3-1 1.0) + (vector-flatten! (-> self velocity) (-> self velocity) s3-1) + (set! f30-2 (- f30-2 (* f30-2 f28-0))) + (+! gp-1 1) + ) + (else + (vector+! (-> self string-trans) (-> self string-trans) s4-1) + (set! f30-2 0.0) + ) ) - (.lvf vf2 (&-> a1-5 quad)) - (.lvf vf1 (&-> a0-4 quad)) - (let ((a0-5 f0-0)) - (.mov vf3 a0-5) ) ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-7 quad) vf4) ) - (vector-normalize! s5-0 1.0) - (vector-normalize-copy! s4-0 (-> self view-flat) 1.0) - (vector-cross! gp-0 s4-0 s5-0) (cond - ((and (< (vector-length (-> self velocity)) (-> *CAMERA-bank* min-detectable-velocity)) - (< (vector-length s3-0) (-> *CAMERA-bank* min-detectable-velocity)) - ) - (set! (-> self string-vel-dir) (the-as uint 0)) - 0 - ) - ((< (cos 5461.3335) (vector-dot (-> *camera* local-down) s5-0)) - (set! (-> self string-vel-dir) (the-as uint 4)) - ) - ((< (vector-dot (-> *camera* local-down) s5-0) (- (cos 5461.3335))) - (set! (-> self string-vel-dir) (the-as uint 3)) - ) - ((< (cos 5461.3335) (vector-dot s4-0 s5-0)) - (set! (-> self string-vel-dir) (the-as uint 6)) - ) - ((< (vector-dot s4-0 s5-0) (- (cos 5461.3335))) - (set! (-> self string-vel-dir) (the-as uint 5)) - ) - ((< (vector-dot (-> *camera* local-down) gp-0) 0.0) - (set! (-> self string-vel-dir) (the-as uint 1)) + ((zero? gp-1) + (set! (-> self options) (logand -1025 (-> self options))) + (if *display-cam-los-debug* + (format *stdcon* "not blocked~%") + ) ) (else - (set! (-> self string-vel-dir) (the-as uint 2)) - ) - ) - ) - (let ((s5-1 (new 'stack-no-clear 'collide-query))) - 0.0 - (let ((f30-2 1.0) - (s4-1 (-> s5-1 move-dist)) - (gp-1 0) - ) - (let ((s3-1 (new 'stack-no-clear 'vector))) - (when *debug-segment* - (if (>= (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) - (cam-collision-record-save (-> self string-trans) (-> self velocity) -1 'no-hit self) + (logior! (-> self options) 1024) + (if *display-cam-los-debug* + (format *stdcon* "blocked ~D ~f~%" gp-1 f30-2) + ) + (let ((gp-2 (new-stack-vector0)) + (f30-3 (vector-length (-> self view-flat))) ) - ) - (while (and (< 0.01 f30-2) - (and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (< gp-1 4)) - ) - (vector-float*! s4-1 (-> self velocity) f30-2) - (if *debug-segment* - (cam-collision-record-save (-> self string-trans) s4-1 gp-1 'normal self) - ) - (let ((f28-0 - (cond - ((logtest? (-> self options) 32) - (set! (-> s5-1 start-pos quad) (-> self string-trans quad)) - (let ((s2-0 s5-1)) - (set! (-> s2-0 radius) (-> *CAMERA-bank* collide-move-rad)) - (set! (-> s2-0 collide-with) (collide-spec backgnd obstacle hit-by-others-list camera-blocker pusher)) - (set! (-> s2-0 ignore-process0) #f) - (set! (-> s2-0 ignore-process1) #f) - (set! (-> s2-0 ignore-pat) (the-as pat-surface (camera-master-method-16 *camera* #f))) - (set! (-> s2-0 action-mask) (collide-action solid)) - ) - (fill-and-probe-using-line-sphere *collide-cache* s5-1) - ) - (else - -100000000.0 - ) - ) - ) - ) - (if *display-cam-los-debug* - (format *stdcon* "vp ~f vr ~f r ~f ta ~f~%" (vector-length s4-1) f30-2 (/ (vector-length s4-1) f30-2) f28-0) - ) + (vector-! gp-2 (-> self string-trans) (-> *camera* tpos-curr-adj)) + (vector-flatten! gp-2 gp-2 (-> *camera* local-down)) + (let ((f28-1 (vector-length gp-2))) (cond - ((>= f28-0 0.0) - (let* ((f1-10 (fmax 0.01 (/ 40.96 (vector-length s4-1)))) - (f0-22 (fmax 0.0 (- f28-0 f1-10))) - (v1-71 (-> self string-trans)) - ) - (let ((a0-24 (-> self string-trans))) - (.lvf vf2 (&-> s4-1 quad)) - (.lvf vf1 (&-> a0-24 quad)) - ) - (let ((a0-25 f0-22)) - (.mov vf3 a0-25) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-71 quad) vf4) - ) - (vector-! s3-1 (-> self string-trans) (-> s5-1 best-other-tri intersect)) - (vector-normalize! s3-1 1.0) - (vector-flatten! (-> self velocity) (-> self velocity) s3-1) - (set! f30-2 (- f30-2 (* f30-2 f28-0))) - (+! gp-1 1) + ((< f28-1 f30-3) + (vector-normalize-copy! (-> self view-flat) gp-2 f28-1) + (set! (-> self min-z-override) f28-1) ) (else - (vector+! (-> self string-trans) (-> self string-trans) s4-1) - (set! f30-2 0.0) - ) - ) - ) - ) - ) - (cond - ((zero? gp-1) - (set! (-> self options) (logand -1025 (-> self options))) - (if *display-cam-los-debug* - (format *stdcon* "not blocked~%") - ) - ) - (else - (logior! (-> self options) 1024) - (if *display-cam-los-debug* - (format *stdcon* "blocked ~D ~f~%" gp-1 f30-2) - ) - (let ((gp-2 (new-stack-vector0)) - (f30-3 (vector-length (-> self view-flat))) - ) - (vector-! gp-2 (-> self string-trans) (-> *camera* tpos-curr-adj)) - (vector-flatten! gp-2 gp-2 (-> *camera* local-down)) - (let ((f28-1 (vector-length gp-2))) - (cond - ((< f28-1 f30-3) - (vector-normalize-copy! (-> self view-flat) gp-2 f28-1) - (set! (-> self min-z-override) f28-1) - ) - (else - (vector-normalize-copy! (-> self view-flat) gp-2 f30-3) - ) + (vector-normalize-copy! (-> self view-flat) gp-2 f30-3) ) ) ) @@ -4427,11 +4369,11 @@ ) ) ) - (when *display-cam-los-debug* - (let ((v1-103 (new-stack-vector0))) - (vector-! v1-103 (-> self desired-pos) (-> self string-trans)) - (format *stdcon* "vel ~M~%" (vector-length v1-103)) - ) + ) + (when *display-cam-los-debug* + (let ((v1-105 (new-stack-vector0))) + (vector-! v1-105 (-> self desired-pos) (-> self string-trans)) + (format *stdcon* "vel ~M~%" (vector-length v1-105)) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/camera/camera_REF.gc b/test/decompiler/reference/jak2/engine/camera/camera_REF.gc index 3738ccfcf2..8f339d38d0 100644 --- a/test/decompiler/reference/jak2/engine/camera/camera_REF.gc +++ b/test/decompiler/reference/jak2/engine/camera/camera_REF.gc @@ -1205,190 +1205,171 @@ (defun cam-calc-follow! ((arg0 cam-rotation-tracker) (arg1 vector) (arg2 symbol)) (local-vars (sv-128 (function float float float float)) (sv-144 float) (sv-160 float)) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cond - (arg2 - (update! (-> arg0 tilt-adjust) 0.0) - (update! (-> arg0 point-of-interest-blend) 0.0) - (update! (-> arg0 underwater-blend) 0.0) - ) - (else - (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) - (jump-to-target! (-> arg0 tilt-adjust) 0.0) - (jump-to-target! (-> arg0 point-of-interest-blend) 0.0) - (jump-to-target! (-> arg0 underwater-blend) 0.0) - ) + (cond + (arg2 + (update! (-> arg0 tilt-adjust) 0.0) + (update! (-> arg0 point-of-interest-blend) 0.0) + (update! (-> arg0 underwater-blend) 0.0) ) - (set! (-> arg0 follow-height-extra target) (-> *camera* settings extra-follow-height)) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> s4-0 quad) (-> arg0 follow-pt quad)) - (cond - ((logtest? (-> *camera* settings slave-options) (cam-slave-options BIKE_MODE)) - (let ((s1-0 (new 'stack-no-clear 'vector)) - (s0-0 (new 'stack-no-clear 'vector)) - (f30-0 (vector-vector-distance (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj))) - (s2-0 (new 'stack-no-clear 'vector)) - ) - (vector-flatten! s1-0 (the-as vector (&-> *camera* stack 320)) (-> *camera* local-down)) - (vector-normalize! s1-0 1.0) - (vector-! s0-0 (-> *camera* tpos-curr-adj) arg1) - (vector-flatten! s0-0 s0-0 (-> *camera* local-down)) - (vector-normalize! s0-0 1.0) - (vector-float*! s2-0 (the-as vector (&-> *camera* stack 320)) 32768.0) - (set! sv-128 lerp-clamp) - (set! sv-144 (the-as float 0.7)) - (set! sv-160 (the-as float 0.4)) - (let* ((a2-3 (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0)))) - (f30-1 (sv-128 sv-144 sv-160 a2-3)) - (f0-7 (acos (vector-dot s0-0 s1-0))) - (f28-0 (fmax 1820.4445 f0-7)) - ) - (if (< f28-0 8192.0) - (vector-float*! - s2-0 - s2-0 - (+ f30-1 - (* (/ (- 1.0 f30-1) (- 1.0 (cos 32768.0))) (+ (- (cos 32768.0)) (cos (* 5.142857 (- 8192.0 f28-0))))) - ) - ) - ) + (else + (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) + (jump-to-target! (-> arg0 tilt-adjust) 0.0) + (jump-to-target! (-> arg0 point-of-interest-blend) 0.0) + (jump-to-target! (-> arg0 underwater-blend) 0.0) + ) + ) + (set! (-> arg0 follow-height-extra target) (-> *camera* settings extra-follow-height)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> arg0 follow-pt quad)) + (cond + ((logtest? (-> *camera* settings slave-options) (cam-slave-options BIKE_MODE)) + (let ((s1-0 (new 'stack-no-clear 'vector)) + (s0-0 (new 'stack-no-clear 'vector)) + (f30-0 (vector-vector-distance (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj))) + (s2-0 (new 'stack-no-clear 'vector)) ) - (cond - ((< (-> *camera* ease-t) 1.0) - ) - ((< (-> arg0 follow-blend) 1.0) - (let* ((f0-21 (-> arg0 follow-blend)) - (f0-22 (* f0-21 f0-21)) - (f0-23 (* f0-22 f0-22)) - ) - (vector-! s2-0 s2-0 (-> arg0 follow-off)) - (vector-float*! s2-0 s2-0 f0-23) + (vector-flatten! s1-0 (the-as vector (&-> *camera* stack 320)) (-> *camera* local-down)) + (vector-normalize! s1-0 1.0) + (vector-! s0-0 (-> *camera* tpos-curr-adj) arg1) + (vector-flatten! s0-0 s0-0 (-> *camera* local-down)) + (vector-normalize! s0-0 1.0) + (vector-float*! s2-0 (the-as vector (&-> *camera* stack 320)) 32768.0) + (set! sv-128 lerp-clamp) + (set! sv-144 (the-as float 0.7)) + (set! sv-160 (the-as float 0.4)) + (let* ((a2-3 (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0)))) + (f30-1 (sv-128 sv-144 sv-160 a2-3)) + (f0-7 (acos (vector-dot s0-0 s1-0))) + (f28-0 (fmax 1820.4445 f0-7)) ) - (+! (-> arg0 follow-blend) (* 0.016666668 (-> pp clock time-adjust-ratio))) - (vector+! (-> arg0 follow-off) (-> arg0 follow-off) s2-0) - ) - (else - (set! (-> arg0 follow-off quad) (-> s2-0 quad)) + (if (< f28-0 8192.0) + (vector-float*! + s2-0 + s2-0 + (+ f30-1 + (* (/ (- 1.0 f30-1) (- 1.0 (cos 32768.0))) (+ (- (cos 32768.0)) (cos (* 5.142857 (- 8192.0 f28-0))))) + ) + ) ) - ) ) (cond - (arg2 - (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) - (set! (-> arg0 follow-height-extra vel) 0.0) - (update! (-> arg0 follow-height-extra) 0.0) - ) - ) + ((< (-> *camera* ease-t) 1.0) + ) + ((< (-> arg0 follow-blend) 1.0) + (let* ((f0-21 (-> arg0 follow-blend)) + (f0-22 (* f0-21 f0-21)) + (f0-23 (* f0-22 f0-22)) + ) + (vector-! s2-0 s2-0 (-> arg0 follow-off)) + (vector-float*! s2-0 s2-0 f0-23) + ) + (+! (-> arg0 follow-blend) (* 0.016666668 (-> pp clock time-adjust-ratio))) + (vector+! (-> arg0 follow-off) (-> arg0 follow-off) s2-0) + ) (else - (jump-to-target! (-> arg0 follow-height-extra) 0.0) + (set! (-> arg0 follow-off quad) (-> s2-0 quad)) ) ) - (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) - (vector--float*! - (-> arg0 follow-pt) - (-> arg0 follow-pt) - (-> *camera* local-down) - (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) - ) ) - (else - 0.0 - (let ((s2-1 (new-stack-vector0))) - (set! (-> arg0 follow-blend) 0.0) - (cond - ((-> arg0 no-follow) - (vector-reset! s2-1) + (cond + (arg2 + (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) + (set! (-> arg0 follow-height-extra vel) 0.0) + (update! (-> arg0 follow-height-extra) 0.0) ) - (else - (vector-! s2-1 (-> *camera* tpos-curr-adj) arg1) - (vector-normalize! s2-1 1.0) - (let* ((f0-32 (vector-dot (the-as vector (&-> *camera* stack 256)) s2-1)) - (f30-2 (cond - ((< f0-32 0.0) - 1.0 - ) - (else - (let* ((f0-33 (* f0-32 f0-32)) - (f0-34 (- 1.0 f0-33)) - ) - (* f0-34 (* f0-34 f0-34)) - ) + ) + (else + (jump-to-target! (-> arg0 follow-height-extra) 0.0) + ) + ) + (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) + (vector--float*! + (-> arg0 follow-pt) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) + ) + ) + (else + 0.0 + (let ((s2-1 (new-stack-vector0))) + (set! (-> arg0 follow-blend) 0.0) + (cond + ((-> arg0 no-follow) + (vector-reset! s2-1) + ) + (else + (vector-! s2-1 (-> *camera* tpos-curr-adj) arg1) + (vector-normalize! s2-1 1.0) + (let* ((f0-32 (vector-dot (the-as vector (&-> *camera* stack 256)) s2-1)) + (f30-2 (cond + ((< f0-32 0.0) + 1.0 + ) + (else + (let* ((f0-33 (* f0-32 f0-32)) + (f0-34 (- 1.0 f0-33)) + ) + (* f0-34 (* f0-34 f0-34)) ) ) ) + ) + ) + (vector-! s2-1 arg1 (-> *camera* tpos-curr-adj)) + (vector-flatten! s2-1 s2-1 (-> *camera* local-down)) + (let* ((f1-15 (* 0.000022194603 (+ -20480.0 (vector-length s2-1)))) + (f0-37 (fmax 0.0 (fmin 1.0 f1-15))) ) - (vector-! s2-1 arg1 (-> *camera* tpos-curr-adj)) - (vector-flatten! s2-1 s2-1 (-> *camera* local-down)) - (let* ((f1-15 (* 0.000022194603 (+ -20480.0 (vector-length s2-1)))) - (f0-37 (fmax 0.0 (fmin 1.0 f1-15))) - ) - (vector-float*! s2-1 (the-as vector (&-> *camera* stack 256)) (* (lerp 2048.0 8192.0 f0-37) f30-2)) - ) + (vector-float*! s2-1 (the-as vector (&-> *camera* stack 256)) (* (lerp 2048.0 8192.0 f0-37) f30-2)) ) ) ) - (cond - (arg2 - (vector-seek-3d-smooth! (-> arg0 follow-off) s2-1 (* 20480.0 (-> pp clock seconds-per-frame)) 0.05) - (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) - (set! (-> arg0 follow-height-extra vel) 0.0) - (update! (-> arg0 follow-height-extra) 0.0) - ) - ) - (else - (set! (-> arg0 follow-off quad) (-> s2-1 quad)) - (jump-to-target! (-> arg0 follow-height-extra) 0.0) - ) + ) + (cond + (arg2 + (vector-seek-3d-smooth! (-> arg0 follow-off) s2-1 (* 20480.0 (-> pp clock seconds-per-frame)) 0.05) + (if (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options)) + (set! (-> arg0 follow-height-extra vel) 0.0) + (update! (-> arg0 follow-height-extra) 0.0) + ) + ) + (else + (set! (-> arg0 follow-off quad) (-> s2-1 quad)) + (jump-to-target! (-> arg0 follow-height-extra) 0.0) ) ) - (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) - (vector--float*! - (-> arg0 follow-pt) - (-> arg0 follow-pt) - (-> *camera* local-down) - (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) - ) ) - ) - (when (and arg2 (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options))) - (let ((f0-46 - (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) arg1 (-> arg0 old-cam-trans))) - ) - (f1-20 - (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) (-> arg0 follow-pt) s4-0)) - ) - ) - (vector--float*! (-> arg0 follow-pt) (-> arg0 follow-pt) (-> *camera* local-down) (- f1-20 f0-46)) + (vector+! (-> arg0 follow-pt) (-> *camera* tpos-curr-adj) (-> arg0 follow-off)) + (vector--float*! + (-> arg0 follow-pt) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) ) - (let ((v1-107 (-> arg0 follow-off))) - (let ((a0-64 (-> arg0 follow-pt)) - (a1-39 (-> *camera* local-down)) - (f0-49 (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height))) - ) - (.lvf vf2 (&-> a1-39 quad)) - (.lvf vf1 (&-> a0-64 quad)) - (let ((a0-65 f0-49)) - (.mov vf3 a0-65) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-107 quad) vf4) - ) - (vector-! (-> arg0 follow-off) (-> arg0 follow-off) (-> *camera* tpos-curr-adj)) ) ) - (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) - (-> arg0 follow-pt) + (when (and arg2 (logtest? (cam-slave-options VERTICAL_FOLLOW_MATCHES_CAMERA) (-> *camera* settings slave-options))) + (let ((f0-46 + (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) arg1 (-> arg0 old-cam-trans))) + ) + (f1-20 + (vector-dot (-> *camera* local-down) (vector-! (new 'stack-no-clear 'vector) (-> arg0 follow-pt) s4-0)) + ) + ) + (vector--float*! (-> arg0 follow-pt) (-> arg0 follow-pt) (-> *camera* local-down) (- f1-20 f0-46)) + ) + (vector+float*! + (-> arg0 follow-off) + (-> arg0 follow-pt) + (-> *camera* local-down) + (+ (-> arg0 follow-height-extra value) (-> *camera* settings target-height)) + ) + (vector-! (-> arg0 follow-off) (-> arg0 follow-off) (-> *camera* tpos-curr-adj)) + ) ) + (set! (-> arg0 old-cam-trans quad) (-> arg1 quad)) + (-> arg0 follow-pt) ) ) @@ -1627,11 +1608,7 @@ (sv-272 matrix) (sv-288 vector) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) + (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) @@ -1664,21 +1641,11 @@ (vector-normalize! s0-0 f28-0) ) (vector-! (-> arg0 looking-interesting) (-> *camera* settings point-of-interest) (-> arg0 follow-pt)) - (let ((v1-15 (-> arg0 looking-interesting))) - (let ((a0-16 (-> arg0 follow-pt)) - (a1-7 (-> arg0 looking-interesting)) - (f0-4 (-> arg0 point-of-interest-blend value)) - ) - (.lvf vf2 (&-> a1-7 quad)) - (.lvf vf1 (&-> a0-16 quad)) - (let ((a0-17 f0-4)) - (.mov vf3 a0-17) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-15 quad) vf4) + (vector+float*! + (-> arg0 looking-interesting) + (-> arg0 follow-pt) + (-> arg0 looking-interesting) + (-> arg0 point-of-interest-blend value) ) ) (else @@ -1694,13 +1661,13 @@ (set! sv-240 (new 'stack-no-clear 'matrix)) (set! sv-224 (new 'stack-no-clear 'vector)) (vector-normalize-copy! sv-224 s0-0 1.0) - (let* ((v1-24 (-> *camera* local-down)) + (let* ((v1-25 (-> *camera* local-down)) (f0-8 (-> sv-224 x)) (f1-1 (-> sv-224 y)) (f2-0 (-> sv-224 z)) - (f3-0 (-> v1-24 x)) - (f4-0 (-> v1-24 y)) - (f5-0 (-> v1-24 z)) + (f3-0 (-> v1-25 x)) + (f4-0 (-> v1-25 y)) + (f5-0 (-> v1-25 z)) ) (.mula.s f0-8 f3-0) (.madda.s f1-1 f4-0) @@ -1728,10 +1695,10 @@ ) (matrix-rotate-x! sv-240 f30-0) (let ((t9-6 matrix*!) - (a0-29 s1-0) + (a0-28 s1-0) (a2-3 s1-0) ) - (t9-6 a0-29 sv-240 a2-3) + (t9-6 a0-28 sv-240 a2-3) ) ) ) @@ -1755,17 +1722,17 @@ (slave-matrix-blend-2 (-> arg0 inv-mat) arg2 s0-0 s1-0) ) (else - (let* ((v1-59 (-> arg0 inv-mat)) + (let* ((v1-60 (-> arg0 inv-mat)) (a3-2 s1-0) - (a0-35 (-> a3-2 vector 0 quad)) + (a0-34 (-> a3-2 vector 0 quad)) (a1-19 (-> a3-2 vector 1 quad)) (a2-7 (-> a3-2 vector 2 quad)) (a3-3 (-> a3-2 trans quad)) ) - (set! (-> v1-59 vector 0 quad) a0-35) - (set! (-> v1-59 vector 1 quad) a1-19) - (set! (-> v1-59 vector 2 quad) a2-7) - (set! (-> v1-59 trans quad) a3-3) + (set! (-> v1-60 vector 0 quad) a0-34) + (set! (-> v1-60 vector 1 quad) a1-19) + (set! (-> v1-60 vector 2 quad) a2-7) + (set! (-> v1-60 trans quad) a3-3) ) ) ) @@ -1826,134 +1793,95 @@ (sv-176 matrix) (sv-192 vector) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) + (set! sv-144 arg5) + (let ((s0-0 (new-stack-vector0))) + (set! sv-160 (new 'stack-no-clear 'vector)) + (set! (-> sv-160 quad) (the-as uint128 0)) + 1.0 + 1.0 + (let ((s3-0 (new-stack-vector0))) + 0.0 + 1.0 + (set! sv-176 (new 'stack-no-clear 'matrix)) + (set! (-> sv-176 vector 0 quad) (the-as uint128 0)) + (set! (-> sv-176 vector 1 quad) (the-as uint128 0)) + (set! (-> sv-176 vector 2 quad) (the-as uint128 0)) + (set! (-> sv-176 trans quad) (the-as uint128 0)) + (cond + ((< 1.0 arg3) + (set! arg3 1.0) ) - (init-vf0-vector) - (set! sv-144 arg5) - (let ((s0-0 (new-stack-vector0))) - (set! sv-160 (new 'stack-no-clear 'vector)) - (set! (-> sv-160 quad) (the-as uint128 0)) - 1.0 - 1.0 - (let ((s3-0 (new-stack-vector0))) - 0.0 - 1.0 - (set! sv-176 (new 'stack-no-clear 'matrix)) - (set! (-> sv-176 vector 0 quad) (the-as uint128 0)) - (set! (-> sv-176 vector 1 quad) (the-as uint128 0)) - (set! (-> sv-176 vector 2 quad) (the-as uint128 0)) - (set! (-> sv-176 trans quad) (the-as uint128 0)) - (cond - ((< 1.0 arg3) - (set! arg3 1.0) - ) - ((< arg3 0.0) - (set! arg3 0.0) - ) - ) - (cond - (arg4 - (vector-flatten! s0-0 arg1 arg4) - (vector-flatten! sv-160 arg2 arg4) - (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) - (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 sv-160 s0-0) 1.0) - (let ((f26-0 (vector-dot arg4 s3-0))) - (vector-normalize-copy! s3-0 arg4 1.0) - (if (< f26-0 0.0) - (vector-negate! s3-0 s3-0) - ) - ) - ) - (else - (set! (-> s0-0 quad) (-> arg1 quad)) - (set! (-> sv-160 quad) (-> arg2 quad)) - (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) - (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0) - ) - ) - (let ((t9-10 acos)) - (let* ((v1-22 s0-0) - (f0-9 (-> v1-22 x)) - (f1-2 (-> v1-22 y)) - (f2-0 (-> v1-22 z)) - (f3-0 (-> sv-160 x)) - (f4-0 (-> sv-160 y)) - (f5-0 (-> sv-160 z)) - ) - (.mula.s f0-9 f3-0) - (.madda.s f1-2 f4-0) - (.madd.s f0-10 f2-0 f5-0) - ) - (let* ((f1-3 (t9-10 f0-10)) - (f0-12 (* arg3 f1-3)) - ) - (when (< sv-144 f0-12) - (set! f0-12 sv-144) - (set! arg3 (/ sv-144 f1-3)) - ) - (let* ((f0-13 (cos f0-12)) - (t9-12 matrix-axis-sin-cos!) - (a0-20 sv-176) - (a1-13 s3-0) - (f1-5 1.0) - (f2-3 f0-13) - ) - (t9-12 a0-20 a1-13 (sqrtf (- f1-5 (* f2-3 f2-3))) f0-13) - ) - ) - ) - (vector-matrix*! arg0 s0-0 sv-176) - (let ((s0-1 vector-normalize!)) - (set! sv-192 arg0) - (let ((a1-16 (lerp f30-0 f28-0 arg3))) - (s0-1 sv-192 a1-16) - ) - ) - (when arg4 - (let ((v1-33 arg0)) - (let ((a0-24 arg0) - (a1-17 s3-0) - (f0-15 (vector-dot arg1 s3-0)) - ) - (.lvf vf2 (&-> a1-17 quad)) - (.lvf vf1 (&-> a0-24 quad)) - (let ((a0-25 f0-15)) - (.mov vf3 a0-25) + ((< arg3 0.0) + (set! arg3 0.0) + ) + ) + (cond + (arg4 + (vector-flatten! s0-0 arg1 arg4) + (vector-flatten! sv-160 arg2 arg4) + (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) + (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 sv-160 s0-0) 1.0) + (let ((f26-0 (vector-dot arg4 s3-0))) + (vector-normalize-copy! s3-0 arg4 1.0) + (if (< f26-0 0.0) + (vector-negate! s3-0 s3-0) ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-33 quad) vf4) ) - (let ((v1-34 arg0)) - (let ((a0-26 arg0) - (a1-18 s3-0) - (f0-17 (* arg3 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0))) - ) - (.lvf vf2 (&-> a1-18 quad)) - (.lvf vf1 (&-> a0-26 quad)) - (let ((a0-27 f0-17)) - (.mov vf3 a0-27) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-34 quad) vf4) + ) + (else + (set! (-> s0-0 quad) (-> arg1 quad)) + (set! (-> sv-160 quad) (-> arg2 quad)) + (set! f30-0 (vector-normalize-ret-len! s0-0 1.0)) + (set! f28-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0) + ) + ) + (let ((t9-10 acos)) + (let* ((v1-22 s0-0) + (f0-9 (-> v1-22 x)) + (f1-2 (-> v1-22 y)) + (f2-0 (-> v1-22 z)) + (f3-0 (-> sv-160 x)) + (f4-0 (-> sv-160 y)) + (f5-0 (-> sv-160 z)) + ) + (.mula.s f0-9 f3-0) + (.madda.s f1-2 f4-0) + (.madd.s f0-10 f2-0 f5-0) + ) + (let* ((f1-3 (t9-10 f0-10)) + (f0-12 (* arg3 f1-3)) + ) + (when (< sv-144 f0-12) + (set! f0-12 sv-144) + (set! arg3 (/ sv-144 f1-3)) + ) + (let* ((f0-13 (cos f0-12)) + (t9-12 matrix-axis-sin-cos!) + (a0-20 sv-176) + (a1-13 s3-0) + (f1-5 1.0) + (f2-3 f0-13) + ) + (t9-12 a0-20 a1-13 (sqrtf (- f1-5 (* f2-3 f2-3))) f0-13) ) ) ) + (vector-matrix*! arg0 s0-0 sv-176) + (let ((s0-1 vector-normalize!)) + (set! sv-192 arg0) + (let ((a1-16 (lerp f30-0 f28-0 arg3))) + (s0-1 sv-192 a1-16) + ) + ) + (when arg4 + (vector+float*! arg0 arg0 s3-0 (vector-dot arg1 s3-0)) + (vector+float*! arg0 arg0 s3-0 (* arg3 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0))) + ) ) - arg0 ) + arg0 ) ;; definition for function v-slrp3! @@ -1976,115 +1904,76 @@ ;; ERROR: Unsupported inline assembly instruction kind - [madd.s f0, f2, f5] (defun v-slrp3! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float)) (local-vars (f0-7 float) (f26-0 float) (f28-0 float) (sv-144 float) (sv-160 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (set! sv-144 arg4) - (let ((s1-0 (new-stack-vector0))) - (set! sv-160 (new 'stack-no-clear 'vector)) - (set! (-> sv-160 quad) (the-as uint128 0)) + (set! sv-144 arg4) + (let ((s1-0 (new-stack-vector0))) + (set! sv-160 (new 'stack-no-clear 'vector)) + (set! (-> sv-160 quad) (the-as uint128 0)) + 0.0 + 0.0 + (let ((s3-0 (new-stack-vector0)) + (f30-0 1.0) + ) 0.0 - 0.0 - (let ((s3-0 (new-stack-vector0)) - (f30-0 1.0) - ) - 0.0 - (let ((s0-0 (new-stack-matrix0))) - (cond - (arg3 - (vector-flatten! s1-0 arg1 arg3) - (vector-flatten! sv-160 arg2 arg3) - (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) - (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 sv-160 s1-0) 1.0) - (let ((f24-0 (vector-dot arg3 s3-0))) - (vector-normalize-copy! s3-0 arg3 1.0) - (if (< f24-0 0.0) - (vector-negate! s3-0 s3-0) - ) - ) - ) - (else - (set! (-> s1-0 quad) (-> arg1 quad)) - (set! (-> sv-160 quad) (-> arg2 quad)) - (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) - (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) - (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0) + (let ((s0-0 (new-stack-matrix0))) + (cond + (arg3 + (vector-flatten! s1-0 arg1 arg3) + (vector-flatten! sv-160 arg2 arg3) + (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) + (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 sv-160 s1-0) 1.0) + (let ((f24-0 (vector-dot arg3 s3-0))) + (vector-normalize-copy! s3-0 arg3 1.0) + (if (< f24-0 0.0) + (vector-negate! s3-0 s3-0) + ) ) ) - (let ((t9-10 acos)) - (let* ((v1-10 s1-0) - (f0-6 (-> v1-10 x)) - (f1-0 (-> v1-10 y)) - (f2-0 (-> v1-10 z)) - (f3-0 (-> sv-160 x)) - (f4-0 (-> sv-160 y)) - (f5-0 (-> sv-160 z)) + (else + (set! (-> s1-0 quad) (-> arg1 quad)) + (set! (-> sv-160 quad) (-> arg2 quad)) + (set! f28-0 (vector-normalize-ret-len! s1-0 1.0)) + (set! f26-0 (vector-normalize-ret-len! sv-160 1.0)) + (vector-normalize! (vector-cross! s3-0 arg2 arg1) 1.0) + ) + ) + (let ((t9-10 acos)) + (let* ((v1-10 s1-0) + (f0-6 (-> v1-10 x)) + (f1-0 (-> v1-10 y)) + (f2-0 (-> v1-10 z)) + (f3-0 (-> sv-160 x)) + (f4-0 (-> sv-160 y)) + (f5-0 (-> sv-160 z)) + ) + (.mula.s f0-6 f3-0) + (.madda.s f1-0 f4-0) + (.madd.s f0-7 f2-0 f5-0) + ) + (let ((f0-8 (t9-10 f0-7))) + (when (< sv-144 f0-8) + (set! f30-0 (/ sv-144 f0-8)) + (set! f0-8 sv-144) + ) + (let* ((f0-9 (cos f0-8)) + (t9-12 matrix-axis-sin-cos!) + (a0-20 s0-0) + (a1-13 s3-0) + (f1-3 1.0) + (f2-1 f0-9) ) - (.mula.s f0-6 f3-0) - (.madda.s f1-0 f4-0) - (.madd.s f0-7 f2-0 f5-0) + (t9-12 a0-20 a1-13 (sqrtf (- f1-3 (* f2-1 f2-1))) f0-9) ) - (let ((f0-8 (t9-10 f0-7))) - (when (< sv-144 f0-8) - (set! f30-0 (/ sv-144 f0-8)) - (set! f0-8 sv-144) - ) - (let* ((f0-9 (cos f0-8)) - (t9-12 matrix-axis-sin-cos!) - (a0-20 s0-0) - (a1-13 s3-0) - (f1-3 1.0) - (f2-1 f0-9) - ) - (t9-12 a0-20 a1-13 (sqrtf (- f1-3 (* f2-1 f2-1))) f0-9) - ) - ) - ) - (vector-matrix*! arg0 s1-0 s0-0) - ) - (vector-normalize! arg0 (lerp f28-0 f26-0 f30-0)) - (when arg3 - (let ((v1-21 arg0)) - (let ((a0-24 arg0) - (a1-17 s3-0) - (f0-11 (vector-dot arg1 s3-0)) - ) - (.lvf vf2 (&-> a1-17 quad)) - (.lvf vf1 (&-> a0-24 quad)) - (let ((a0-25 f0-11)) - (.mov vf3 a0-25) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-21 quad) vf4) - ) - (let ((v1-22 arg0)) - (let ((a0-26 arg0) - (a1-18 s3-0) - (f0-14 (* f30-0 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0))) - ) - (.lvf vf2 (&-> a1-18 quad)) - (.lvf vf1 (&-> a0-26 quad)) - (let ((a0-27 f0-14)) - (.mov vf3 a0-27) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-22 quad) vf4) ) ) + (vector-matrix*! arg0 s1-0 s0-0) + ) + (vector-normalize! arg0 (lerp f28-0 f26-0 f30-0)) + (when arg3 + (vector+float*! arg0 arg0 s3-0 (vector-dot arg1 s3-0)) + (vector+float*! arg0 arg0 s3-0 (* f30-0 (vector-dot (vector-! (new-stack-vector0) arg2 arg1) s3-0))) ) ) - arg0 ) + arg0 ) diff --git a/test/decompiler/reference/jak2/engine/collide/find-nearest_REF.gc b/test/decompiler/reference/jak2/engine/collide/find-nearest_REF.gc index 0875f0cf8c..d7152fd4f7 100644 --- a/test/decompiler/reference/jak2/engine/collide/find-nearest_REF.gc +++ b/test/decompiler/reference/jak2/engine/collide/find-nearest_REF.gc @@ -382,187 +382,162 @@ (sv-752 float) ) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 *search-info*)) - (set! (-> gp-0 match) #f) - (set! (-> gp-0 point quad) (-> arg1 quad)) - (set! (-> gp-0 radius) arg2) - (set! (-> gp-0 best) 1000000000000000000000.0) - (set! (-> gp-0 rating) (search-info-flag)) - (set! (-> gp-0 require) arg4) - (set! (-> gp-0 mask) arg3) - (set! (-> gp-0 rot-base quad) (-> arg5 quad)) - (if arg6 - (set! (-> gp-0 ack-point quad) (-> arg6 quad)) - (set! (-> gp-0 ack-point quad) (-> gp-0 rot-base quad)) - ) - (set! arg7 (cond - ((= arg7 65536.0) - -2.0 - ) - (else - (empty) - arg7 - ) + (let ((gp-0 *search-info*)) + (set! (-> gp-0 match) #f) + (set! (-> gp-0 point quad) (-> arg1 quad)) + (set! (-> gp-0 radius) arg2) + (set! (-> gp-0 best) 1000000000000000000000.0) + (set! (-> gp-0 rating) (search-info-flag)) + (set! (-> gp-0 require) arg4) + (set! (-> gp-0 mask) arg3) + (set! (-> gp-0 rot-base quad) (-> arg5 quad)) + (if arg6 + (set! (-> gp-0 ack-point quad) (-> arg6 quad)) + (set! (-> gp-0 ack-point quad) (-> gp-0 rot-base quad)) + ) + (set! arg7 (cond + ((= arg7 65536.0) + -2.0 + ) + (else + (empty) + arg7 ) - ) - (set! (-> gp-0 rot-range) arg7) - (let ((s4-0 (-> arg0 length))) - (while (begin (label cfg-89) (nonzero? s4-0)) - (+! s4-0 -1) - (let* ((s1-0 (-> arg0 s4-0)) - (s2-0 (-> s1-0 process)) - (s3-0 (if (type? s2-0 process-focusable) - s2-0 - ) - ) ) - (when (and (and s3-0 (zero? (logand (-> (the-as process-focusable s3-0) focus-status) (focus-status disable dead)))) - (and (logtest? (process-mask crate enemy collectable guard) (-> s3-0 mask)) - (zero? (logand (process-mask no-track) (-> s3-0 mask))) - ) - ) - (let* ((s2-1 (get-trans (the-as process-focusable s3-0) 3)) - (f30-0 (- (vector-vector-distance (-> gp-0 point) s2-1) (-> s2-1 w))) + ) + (set! (-> gp-0 rot-range) arg7) + (let ((s4-0 (-> arg0 length))) + (while (begin (label cfg-89) (nonzero? s4-0)) + (+! s4-0 -1) + (let* ((s1-0 (-> arg0 s4-0)) + (s2-0 (-> s1-0 process)) + (s3-0 (if (type? s2-0 process-focusable) + s2-0 + ) ) - (when (nonzero? (-> s1-0 root-prim prim-core collide-as)) - (let ((s1-1 0)) - 0.0 - (let* ((s0-0 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) 1.0)) - (f28-0 (cond - ((logtest? (-> gp-0 mask) (search-info-flag prefer-xz)) - (set! sv-704 deg-diff) - (set! sv-720 (vector-y-angle (-> gp-0 rot-base))) - (let ((a1-7 (vector-y-angle s0-0))) - (fabs (sv-704 sv-720 a1-7)) - ) + ) + (when (and (and s3-0 (zero? (logand (-> (the-as process-focusable s3-0) focus-status) (focus-status disable dead)))) + (and (logtest? (process-mask crate enemy collectable guard) (-> s3-0 mask)) + (zero? (logand (process-mask no-track) (-> s3-0 mask))) + ) + ) + (let* ((s2-1 (get-trans (the-as process-focusable s3-0) 3)) + (f30-0 (- (vector-vector-distance (-> gp-0 point) s2-1) (-> s2-1 w))) + ) + (when (nonzero? (-> s1-0 root-prim prim-core collide-as)) + (let ((s1-1 0)) + 0.0 + (let* ((s0-0 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) 1.0)) + (f28-0 (cond + ((logtest? (-> gp-0 mask) (search-info-flag prefer-xz)) + (set! sv-704 deg-diff) + (set! sv-720 (vector-y-angle (-> gp-0 rot-base))) + (let ((a1-7 (vector-y-angle s0-0))) + (fabs (sv-704 sv-720 a1-7)) ) - ((logtest? (-> gp-0 mask) (search-info-flag prefer-angle)) - (- -9999.0 (vector-dot s0-0 (-> gp-0 rot-base))) - ) - ((logtest? (-> gp-0 mask) (search-info-flag prefer-center)) - (* f30-0 (fmax 0.01 (- 1.0 (vector-dot s0-0 (-> gp-0 rot-base))))) - ) - (else - f30-0 - ) + ) + ((logtest? (-> gp-0 mask) (search-info-flag prefer-angle)) + (- -9999.0 (vector-dot s0-0 (-> gp-0 rot-base))) + ) + ((logtest? (-> gp-0 mask) (search-info-flag prefer-center)) + (* f30-0 (fmax 0.01 (- 1.0 (vector-dot s0-0 (-> gp-0 rot-base))))) + ) + (else + f30-0 ) ) - ) - (cond - ((logtest? (-> gp-0 mask) (search-info-flag cull-angle)) - (cond - ((< (-> gp-0 rot-range) 14563.556) - (let ((f26-0 (vector-dot (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) (-> gp-0 rot-base))) - (s0-1 (new 'stack-no-clear 'vector)) - ) - (let ((v1-45 (-> gp-0 point)) - (a0-23 (-> gp-0 rot-base)) - (f0-13 f26-0) - ) - (.lvf vf2 (&-> a0-23 quad)) - (.lvf vf1 (&-> v1-45 quad)) - (let ((v1-46 f0-13)) - (.mov vf3 v1-46) - ) ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s0-1 quad) vf4) - (if (< (* f26-0 (tan (-> gp-0 rot-range))) (- (vector-vector-distance s0-1 s2-1) (-> s2-1 w))) + ) + (cond + ((logtest? (-> gp-0 mask) (search-info-flag cull-angle)) + (cond + ((< (-> gp-0 rot-range) 14563.556) + (let* ((f26-0 (vector-dot (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 point)) (-> gp-0 rot-base))) + (s0-2 (vector+float*! (new 'stack-no-clear 'vector) (-> gp-0 point) (-> gp-0 rot-base) f26-0)) + ) + (if (< (* f26-0 (tan (-> gp-0 rot-range))) (- (vector-vector-distance s0-2 s2-1) (-> s2-1 w))) + (goto cfg-89) + ) + ) + ) + (else + (if (< (vector-dot s0-0 (-> gp-0 rot-base)) (cos (-> gp-0 rot-range))) + (return (the-as basic #f)) + ) + ) + ) + ) + ((logtest? (-> gp-0 mask) (search-info-flag cull-xz)) + (let ((f26-3 (-> gp-0 rot-range))) + (set! sv-736 deg-diff) + (set! sv-752 (vector-y-angle (-> gp-0 rot-base))) + (let ((a1-10 (vector-y-angle s0-0))) + (if (< f26-3 (fabs (sv-736 sv-752 a1-10))) + (goto cfg-89) + ) + ) + ) + ) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag back-point)) + (if (< (vector-dot + (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 ack-point)) 1.0) + (-> gp-0 rot-base) + ) + 0.0 + ) + (goto cfg-89) + ) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag combo)) + (if (not (send-event s3-0 'combo)) + (goto cfg-89) + ) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag check-track)) + (if (not (send-event s3-0 'track #f)) + (goto cfg-89) + ) + ) + (if (logtest? (process-mask enemy guard) (-> s3-0 mask)) + (set! s1-1 (logior s1-1 2)) + ) + (if (logtest? (process-mask crate) (-> s3-0 mask)) + (set! s1-1 (logior s1-1 1)) + ) + (if (and (nonzero? (-> s3-0 draw)) (logtest? (-> s3-0 draw status) (draw-control-status on-screen))) + (set! s1-1 (logior s1-1 4)) + ) + (let ((s1-2 (logand (the-as search-info-flag s1-1) (-> gp-0 mask)))) + (when (and (>= s1-2 (the-as int (-> gp-0 rating))) + (or (zero? (-> gp-0 require)) (logtest? (the-as search-info-flag s1-2) (-> gp-0 require))) + (< f28-0 (-> gp-0 best)) + (< f30-0 (-> gp-0 radius)) + ) + (when (logtest? (-> gp-0 mask) (search-info-flag probe)) + (let ((a1-15 (new 'stack-no-clear 'collide-query))) + (set! (-> a1-15 start-pos quad) (-> gp-0 ack-point quad)) + (vector-! (-> a1-15 move-dist) s2-1 (-> gp-0 ack-point)) + (let ((v1-112 a1-15)) + (set! (-> v1-112 radius) 1228.8) + (set! (-> v1-112 collide-with) (collide-spec backgnd)) + (set! (-> v1-112 ignore-process0) pp) + (set! (-> v1-112 ignore-process1) #f) + (set! (-> v1-112 ignore-pat) + (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1) + ) + (set! (-> v1-112 action-mask) (collide-action solid)) + ) + (let ((f0-29 (fill-and-probe-using-line-sphere *collide-cache* a1-15))) + (if (and (>= f0-29 0.0) (< f0-29 1.0)) (goto cfg-89) ) ) ) - (else - (if (< (vector-dot s0-0 (-> gp-0 rot-base)) (cos (-> gp-0 rot-range))) - (return (the-as basic #f)) - ) - ) - ) - ) - ((logtest? (-> gp-0 mask) (search-info-flag cull-xz)) - (let ((f26-3 (-> gp-0 rot-range))) - (set! sv-736 deg-diff) - (set! sv-752 (vector-y-angle (-> gp-0 rot-base))) - (let ((a1-10 (vector-y-angle s0-0))) - (if (< f26-3 (fabs (sv-736 sv-752 a1-10))) - (goto cfg-89) - ) - ) - ) - ) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag back-point)) - (if (< (vector-dot - (vector-normalize! (vector-! (new 'stack-no-clear 'vector) s2-1 (-> gp-0 ack-point)) 1.0) - (-> gp-0 rot-base) - ) - 0.0 - ) - (goto cfg-89) - ) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag combo)) - (if (not (send-event s3-0 'combo)) - (goto cfg-89) - ) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag check-track)) - (if (not (send-event s3-0 'track #f)) - (goto cfg-89) - ) - ) - (if (logtest? (process-mask enemy guard) (-> s3-0 mask)) - (set! s1-1 (logior s1-1 2)) - ) - (if (logtest? (process-mask crate) (-> s3-0 mask)) - (set! s1-1 (logior s1-1 1)) - ) - (if (and (nonzero? (-> (the-as process-focusable s3-0) draw)) - (logtest? (-> (the-as process-focusable s3-0) draw status) (draw-control-status on-screen)) - ) - (set! s1-1 (logior s1-1 4)) - ) - (let ((s1-2 (logand (the-as search-info-flag s1-1) (-> gp-0 mask)))) - (when (and (>= s1-2 (the-as int (-> gp-0 rating))) - (or (zero? (-> gp-0 require)) (logtest? (the-as search-info-flag s1-2) (-> gp-0 require))) - (< f28-0 (-> gp-0 best)) - (< f30-0 (-> gp-0 radius)) - ) - (when (logtest? (-> gp-0 mask) (search-info-flag probe)) - (let ((a1-15 (new 'stack-no-clear 'collide-query))) - (set! (-> a1-15 start-pos quad) (-> gp-0 ack-point quad)) - (vector-! (-> a1-15 move-dist) s2-1 (-> gp-0 ack-point)) - (let ((v1-113 a1-15)) - (set! (-> v1-113 radius) 1228.8) - (set! (-> v1-113 collide-with) (collide-spec backgnd)) - (set! (-> v1-113 ignore-process0) pp) - (set! (-> v1-113 ignore-process1) #f) - (set! (-> v1-113 ignore-pat) - (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1) - ) - (set! (-> v1-113 action-mask) (collide-action solid)) - ) - (let ((f0-29 (fill-and-probe-using-line-sphere *collide-cache* a1-15))) - (if (and (>= f0-29 0.0) (< f0-29 1.0)) - (goto cfg-89) - ) - ) - ) - ) - (set! (-> gp-0 match) s3-0) - (set! (-> gp-0 best) f28-0) - (set! (-> gp-0 rating) (the-as search-info-flag s1-2)) ) + (set! (-> gp-0 match) s3-0) + (set! (-> gp-0 best) f28-0) + (set! (-> gp-0 rating) (the-as search-info-flag s1-2)) ) ) ) @@ -572,8 +547,8 @@ ) ) ) - (-> gp-0 match) ) + (-> gp-0 match) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/debug/debug_REF.gc b/test/decompiler/reference/jak2/engine/debug/debug_REF.gc index 2b228a3214..51b5738862 100644 --- a/test/decompiler/reference/jak2/engine/debug/debug_REF.gc +++ b/test/decompiler/reference/jak2/engine/debug/debug_REF.gc @@ -1129,108 +1129,69 @@ (mat matrix) (forward-length float) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (b! (not enable) cfg-8 :delay (nop!)) - (set! var-bucket bucket) - (set! var-position position) - (set! var-forward forward) - (set! var-arg4 arg4) - (set! var-color color) - (set! mat (new 'stack-no-clear 'matrix)) - (set! forward-length (vector-length var-forward)) - (let ((mat-forward (new 'stack-no-clear 'vector)) - (mat-down (new 'stack-no-clear 'vector)) - ) - (vector-normalize-copy! mat-forward var-forward 1.0) - (vector-reset! mat-down) - (let* ((f0-2 (-> mat-forward y)) - (f0-4 (* f0-2 f0-2)) - (f1-0 (-> mat-forward z)) - ) - (if (< f0-4 (* f1-0 f1-0)) - (set! (-> mat-down y) -1.0) - (set! (-> mat-down z) -1.0) - ) + (b! (not enable) cfg-8 :delay (nop!)) + (set! var-bucket bucket) + (set! var-position position) + (set! var-forward forward) + (set! var-arg4 arg4) + (set! var-color color) + (set! mat (new 'stack-no-clear 'matrix)) + (set! forward-length (vector-length var-forward)) + (let ((mat-forward (new 'stack-no-clear 'vector)) + (mat-down (new 'stack-no-clear 'vector)) ) - (forward-down->inv-matrix mat mat-forward mat-down) + (vector-normalize-copy! mat-forward var-forward 1.0) + (vector-reset! mat-down) + (let* ((f0-2 (-> mat-forward y)) + (f0-4 (* f0-2 f0-2)) + (f1-0 (-> mat-forward z)) + ) + (if (< f0-4 (* f1-0 f1-0)) + (set! (-> mat-down y) -1.0) + (set! (-> mat-down z) -1.0) + ) ) - (set! (-> mat trans quad) (-> var-position quad)) - (set! (-> mat trans w) 1.0) - (let ((gp-1 (new 'static 'inline-array vector 3 - (new 'static 'vector :y 0.5877 :z 0.951 :w 0.951) - (new 'static 'vector :x 0.5877 :z -0.5877 :w -0.951) - (new 'static 'vector :x -0.951 :y -0.5878) - ) - ) - (s5-1 (new 'static 'inline-array vector 3 - (new 'static 'vector :x 1.0 :y 0.809 :z 0.3089 :w -0.3088) - (new 'static 'vector :x -0.809 :y -1.0 :z -0.809 :w -0.309) - (new 'static 'vector :x 0.3089 :y 0.8089) - ) - ) - (s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - (s2-0 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> s1-0 z) 0.0) - (set! (-> s1-0 w) 1.0) - (set! (-> s1-0 x) (* var-arg4 (-> s5-1 2 y))) - (set! (-> s1-0 y) (* var-arg4 (-> gp-1 2 y))) - (vector-matrix*! s3-0 s1-0 mat) - (dotimes (i 10) - (set! (-> s4-0 quad) (-> s3-0 quad)) - (set! (-> s1-0 x) (* var-arg4 (-> (&-> s5-1 0 data i) 0))) - (set! (-> s1-0 y) (* var-arg4 (-> (&-> gp-1 0 data i) 0))) - (vector-matrix*! s3-0 s1-0 mat) - (add-debug-line #t var-bucket s4-0 s3-0 var-color #f (the-as rgba -1)) - (let ((v1-26 s2-0)) - (let ((a0-10 s3-0) - (a1-7 (-> mat vector 2)) - (f0-18 forward-length) - ) - (.lvf vf2 (&-> a1-7 quad)) - (.lvf vf1 (&-> a0-10 quad)) - (let ((a0-11 f0-18)) - (.mov vf3 a0-11) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-26 quad) vf4) - ) - (add-debug-line #t var-bucket s3-0 s2-0 var-color #f (the-as rgba -1)) - (let ((v1-27 s4-0)) - (let ((a0-13 s4-0) - (a1-10 (-> mat vector 2)) - (f0-19 forward-length) - ) - (.lvf vf2 (&-> a1-10 quad)) - (.lvf vf1 (&-> a0-13 quad)) - (let ((a0-14 f0-19)) - (.mov vf3 a0-14) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-27 quad) vf4) - ) - (add-debug-line #t var-bucket s4-0 s2-0 var-color #f (the-as rgba -1)) - ) - ) - (label cfg-8) - 0 - (none) + (forward-down->inv-matrix mat mat-forward mat-down) ) + (set! (-> mat trans quad) (-> var-position quad)) + (set! (-> mat trans w) 1.0) + (let ((gp-1 (new 'static 'inline-array vector 3 + (new 'static 'vector :y 0.5877 :z 0.951 :w 0.951) + (new 'static 'vector :x 0.5877 :z -0.5877 :w -0.951) + (new 'static 'vector :x -0.951 :y -0.5878) + ) + ) + (s5-1 (new 'static 'inline-array vector 3 + (new 'static 'vector :x 1.0 :y 0.809 :z 0.3089 :w -0.3088) + (new 'static 'vector :x -0.809 :y -1.0 :z -0.809 :w -0.309) + (new 'static 'vector :x 0.3089 :y 0.8089) + ) + ) + (s4-0 (new 'stack-no-clear 'vector)) + (s3-0 (new 'stack-no-clear 'vector)) + (s2-0 (new 'stack-no-clear 'vector)) + (s1-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s1-0 z) 0.0) + (set! (-> s1-0 w) 1.0) + (set! (-> s1-0 x) (* var-arg4 (-> s5-1 2 y))) + (set! (-> s1-0 y) (* var-arg4 (-> gp-1 2 y))) + (vector-matrix*! s3-0 s1-0 mat) + (dotimes (i 10) + (set! (-> s4-0 quad) (-> s3-0 quad)) + (set! (-> s1-0 x) (* var-arg4 (-> (&-> s5-1 0 data i) 0))) + (set! (-> s1-0 y) (* var-arg4 (-> (&-> gp-1 0 data i) 0))) + (vector-matrix*! s3-0 s1-0 mat) + (add-debug-line #t var-bucket s4-0 s3-0 var-color #f (the-as rgba -1)) + (vector+float*! s2-0 s3-0 (-> mat vector 2) forward-length) + (add-debug-line #t var-bucket s3-0 s2-0 var-color #f (the-as rgba -1)) + (vector+float*! s4-0 s4-0 (-> mat vector 2) forward-length) + (add-debug-line #t var-bucket s4-0 s2-0 var-color #f (the-as rgba -1)) + ) + ) + (label cfg-8) + 0 + (none) ) ;; definition (debug) for function add-debug-circle diff --git a/test/decompiler/reference/jak2/engine/debug/editable_REF.gc b/test/decompiler/reference/jak2/engine/debug/editable_REF.gc index 6537ebf917..d589338c60 100644 --- a/test/decompiler/reference/jak2/engine/debug/editable_REF.gc +++ b/test/decompiler/reference/jak2/engine/debug/editable_REF.gc @@ -1036,33 +1036,31 @@ ;; definition for method 14 of type editable-face ;; INFO: Used lq/sq -;; WARN: Return type mismatch object vs vector. (defmethod edit-get-trans editable-face ((obj editable-face)) "Returns the `trans` [[vector]] or [[*null-vector*]]" "The center of the obj." - (the-as vector (cond - ((>= (-> obj length) 3) - (let ((s5-0 (new 'static 'vector))) - (set! (-> s5-0 quad) (the-as uint128 0)) - (vector+! s5-0 s5-0 (edit-get-trans (-> obj vertex 0))) - (vector+! s5-0 s5-0 (edit-get-trans (-> obj vertex 1))) - (vector+! s5-0 s5-0 (edit-get-trans (-> obj vertex 2))) - (vector-float*! s5-0 s5-0 0.33333334) - ) - ) - ((>= (-> obj length) 2) - (let ((s5-1 (new 'static 'vector))) - (set! (-> s5-1 quad) (the-as uint128 0)) - (vector+! s5-1 s5-1 (edit-get-trans (-> obj vertex 0))) - (vector+! s5-1 s5-1 (edit-get-trans (-> obj vertex 1))) - (vector-float*! s5-1 s5-1 0.5) - ) - ) - (else - *null-vector* - ) - ) - ) + (cond + ((>= (-> obj length) 3) + (let ((s5-0 (new 'static 'vector))) + (set! (-> s5-0 quad) (the-as uint128 0)) + (vector+! s5-0 s5-0 (edit-get-trans (-> obj vertex 0))) + (vector+! s5-0 s5-0 (edit-get-trans (-> obj vertex 1))) + (vector+! s5-0 s5-0 (edit-get-trans (-> obj vertex 2))) + (vector-float*! s5-0 s5-0 0.33333334) + ) + ) + ((>= (-> obj length) 2) + (let ((s5-1 (new 'static 'vector))) + (set! (-> s5-1 quad) (the-as uint128 0)) + (vector+! s5-1 s5-1 (edit-get-trans (-> obj vertex 0))) + (vector+! s5-1 s5-1 (edit-get-trans (-> obj vertex 1))) + (vector-float*! s5-1 s5-1 0.5) + ) + ) + (else + *null-vector* + ) + ) ) ;; definition for method 22 of type editable-face @@ -1373,246 +1371,7 @@ ) ;; definition for method 29 of type editable-face -;; INFO: Used lq/sq -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 376 signed mismatch -;; WARN: Stack slot offset 400 signed mismatch -;; WARN: Stack slot offset 292 signed mismatch -;; WARN: Return type mismatch int vs symbol. -(defmethod editable-method-29 editable-face ((obj editable-face) (arg0 editable-filter)) - (local-vars - (sv-208 (inline-array vector)) - (sv-216 int) - (sv-288 array) - (sv-292 int) - (sv-296 int) - (sv-368 matrix) - (sv-372 uint) - (sv-376 number) - (sv-380 symbol) - (sv-400 float) - ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (if (or (logtest? arg0 (editable-filter water-command)) (logtest? (-> obj flags) (editable-flag mark))) - (return (the-as symbol #f)) - ) - (logior! (-> obj flags) (editable-flag mark)) - (let ((s5-0 (new 'stack-no-clear 'inline-array 'vector 6))) - (dotimes (v1-7 6) - (set! (-> s5-0 v1-7 quad) (the-as uint128 0)) - ) - (let ((s4-0 (editable-face-method-30 obj s5-0))) - (when (and (>= s4-0 4) (>= (-> obj length) 3)) - (let ((v1-14 0)) - (dotimes (a0-7 s4-0) - (if (logtest? (-> obj vertex a0-7 flags) (editable-flag selected)) - (+! v1-14 1) - ) - ) - (cond - ((= v1-14 s4-0) - (set! arg0 (logior arg0 (editable-filter load))) - ) - ((= v1-14 2) - (let ((v1-15 (new 'stack-no-clear 'inline-array 'vector 6))) - (dotimes (a0-12 6) - (set! (-> v1-15 a0-12 quad) (the-as uint128 0)) - ) - (set! sv-208 v1-15) - ) - (set! sv-216 0) - (dotimes (s2-2 s4-0) - (when (zero? (logand (-> obj vertex s2-2 flags) (editable-flag selected))) - (set! (-> sv-208 sv-216 quad) (-> (edit-get-trans (-> obj vertex s2-2)) quad)) - (set! sv-216 (+ sv-216 1)) - ) - ) - (dotimes (s2-3 s4-0) - (when (logtest? (-> obj vertex s2-3 flags) (editable-flag selected)) - (set! (-> sv-208 sv-216 quad) (-> (edit-get-trans (-> obj vertex s2-3)) quad)) - (set! sv-216 (+ sv-216 1)) - ) - ) - (normal-of-plane (-> obj normal) (-> sv-208 0) (-> sv-208 1) (-> sv-208 2)) - (set! (-> obj center quad) (-> (edit-get-trans obj) quad)) - ) - ) - ) - (when (zero? (logand arg0 (editable-filter load))) - (when (= (-> obj normal w) 0.0) - (editable-face-method-31 obj (-> obj normal)) - (set! (-> obj center quad) (-> (edit-get-trans obj) quad)) - ) - (let ((s3-2 0) - (s2-5 (-> obj normal)) - (s1-2 (-> obj center)) - ) - (while (< s3-2 s4-0) - (when (logtest? (-> obj vertex s3-2 flags) (editable-flag selected)) - (let* ((a1-14 (vector-! (new 'stack-no-clear 'vector) (-> s5-0 s3-2) s1-2)) - (f0-2 (vector-dot a1-14 s2-5)) - (a0-27 (-> obj vertex s3-2)) - (t9-7 (method-of-object a0-27 edit-coord!)) - ) - (let ((v1-76 (-> s5-0 s3-2)) - (a2-1 s2-5) - (f0-3 (- f0-2)) - ) - (.lvf vf2 (&-> a2-1 quad)) - (.lvf vf1 (&-> v1-76 quad)) - (let ((v1-77 f0-3)) - (.mov vf3 v1-77) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a1-14 quad) vf4) - (t9-7 a0-27 a1-14 (editable-flag x y z no-plane-snap)) - ) - ) - (+! s3-2 1) - ) - ) - ) - (set! sv-288 - ((method-of-type array new) - (the-as symbol (new 'stack-no-clear 'array 'editable-point 6)) - array - editable-point - 6 - ) - ) - (set! sv-292 (+ (-> obj length) -1)) - (set! sv-296 1) - (editable-face-method-31 obj (-> obj normal)) - (dotimes (v1-86 sv-292) - (set! (-> (the-as editable-point (+ (* v1-86 4) (the-as int sv-288))) region) - (the-as editable-region (-> obj vertex (+ v1-86 1))) - ) - ) - (set! sv-368 (new-stack-matrix0)) - (set! sv-372 (the-as uint #f)) - (set! sv-376 0.0) - (set! sv-380 #t) - (vector-normalize! - (vector-! (-> sv-368 vector 2) (edit-get-trans obj) (edit-get-trans (-> obj vertex 0))) - 1.0 - ) - (vector-normalize! (editable-face-method-31 obj (-> sv-368 vector 1)) 1.0) - (vector-normalize! - (vector-cross! (the-as vector (-> sv-368 vector)) (-> sv-368 vector 2) (-> sv-368 vector 1)) - 1.0 - ) - (set! (-> sv-368 trans quad) (-> (edit-get-trans (-> obj vertex 0)) quad)) - (set! (-> sv-368 trans w) 1.0) - (matrix-4x4-inverse! sv-368 sv-368) - (while (< sv-296 (-> obj length)) - (set! sv-372 (the-as uint #f)) - (dotimes (s5-4 sv-292) - (when (l.wu (+ (* s5-4 4) (the-as int sv-288) 12)) - (let* ((a1-26 (edit-get-trans (-> (the-as (array editable-point) sv-288) s5-4))) - (a0-48 (vector-matrix*! (new 'stack-no-clear 'vector) a1-26 sv-368)) - ) - (set! sv-400 (vector-y-angle a0-48)) - ) - (cond - (sv-380 - (when (or (not sv-372) (< (the-as float (gpr->fpr sv-376)) sv-400)) - (set! sv-372 (l.wu (+ (* s5-4 4) (the-as int sv-288) 12))) - (set! sv-376 sv-400) - ) - ) - (else - (when (or (not sv-372) (< sv-400 (the-as float (gpr->fpr sv-376)))) - (set! sv-372 (l.wu (+ (* s5-4 4) (the-as int sv-288) 12))) - (set! sv-376 sv-400) - ) - ) - ) - ) - ) - (set! (-> obj vertex sv-296) (the-as editable-point sv-372)) - (dotimes (v1-138 sv-292) - (when (= sv-372 (l.wu (+ (* v1-138 4) (the-as int sv-288) 12))) - (let ((a0-59 (+ (* v1-138 4) (the-as int sv-288)))) - (s.w! (+ a0-59 12) #f) - ) - ) - ) - (set! sv-296 (+ sv-296 1)) - (set! sv-380 (not sv-380)) - ) - (if (< (vector-dot (-> obj normal) (editable-face-method-31 obj (new 'stack-no-clear 'vector))) 0.0) - (logxor! (-> obj flags) (editable-flag orient)) - ) - ) - ) - ) - (editable-face-method-31 obj (-> obj normal)) - (set! (-> obj center quad) (-> (edit-get-trans obj) quad)) - (the-as symbol 0) - ) - ) +;; ERROR: function was not converted to expressions. Cannot decompile. ;; definition for method 10 of type editable-face ;; INFO: Used lq/sq @@ -1767,159 +1526,36 @@ ;; definition for method 30 of type editable-plane (defmethod editable-plane-method-30 editable-plane ((obj editable-plane) (arg0 matrix)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (case (-> obj length) - ((2) - (let* ((v1-2 (editable-plane-method-31 obj (new 'stack-no-clear 'vector))) - (s5-1 (vector-cross! - (new 'stack-no-clear 'vector) - v1-2 - (if (< 0.7 (fabs (vector-dot v1-2 (new 'static 'vector :z 1.0 :w 1.0)))) - (new 'static 'vector :x 1.0 :w 1.0) - (new 'static 'vector :z 1.0 :w 1.0) - ) - ) + (case (-> obj length) + ((2) + (let* ((v1-2 (editable-plane-method-31 obj (new 'stack-no-clear 'vector))) + (s5-1 (vector-cross! + (new 'stack-no-clear 'vector) + v1-2 + (if (< 0.7 (fabs (vector-dot v1-2 (new 'static 'vector :z 1.0 :w 1.0)))) + (new 'static 'vector :x 1.0 :w 1.0) + (new 'static 'vector :z 1.0 :w 1.0) + ) ) - (s4-1 (vector-cross! (new 'stack-no-clear 'vector) s5-1 v1-2)) - (f30-0 (-> obj radius)) - ) - (let ((v1-4 (edit-get-trans (-> obj vertex 0)))) - (let ((a0-6 (-> arg0 vector))) - (let ((a1-6 v1-4) - (a2-1 s5-1) - (f0-1 f30-0) - ) - (.lvf vf2 (&-> a2-1 quad)) - (.lvf vf1 (&-> a1-6 quad)) - (let ((a1-7 f0-1)) - (.mov vf3 a1-7) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-6 0 quad) vf4) - ) - (let ((a0-7 (-> arg0 vector))) - (let ((a1-8 (-> arg0 vector)) - (a2-2 s4-1) - (f0-2 (- f30-0)) - ) - (.lvf vf2 (&-> a2-2 quad)) - (.lvf vf1 (&-> a1-8 0 quad)) - (let ((a1-9 f0-2)) - (.mov vf3 a1-9) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-7 0 quad) vf4) - ) - (let ((a0-8 (-> arg0 vector 1))) - (let ((a1-10 v1-4) - (a2-3 s5-1) - (f0-3 (- f30-0)) - ) - (.lvf vf2 (&-> a2-3 quad)) - (.lvf vf1 (&-> a1-10 quad)) - (let ((a1-11 f0-3)) - (.mov vf3 a1-11) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-8 quad) vf4) - ) - (let ((a0-9 (-> arg0 vector 1))) - (let ((a1-12 (-> arg0 vector 1)) - (a2-4 s4-1) - (f0-4 (- f30-0)) - ) - (.lvf vf2 (&-> a2-4 quad)) - (.lvf vf1 (&-> a1-12 quad)) - (let ((a1-13 f0-4)) - (.mov vf3 a1-13) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-9 quad) vf4) - ) - (let ((a0-10 (-> arg0 vector 2))) - (let ((a1-14 v1-4) - (a2-5 s5-1) - (f0-5 f30-0) - ) - (.lvf vf2 (&-> a2-5 quad)) - (.lvf vf1 (&-> a1-14 quad)) - (let ((a1-15 f0-5)) - (.mov vf3 a1-15) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-10 quad) vf4) - ) - (let ((a0-11 (-> arg0 vector 2))) - (let ((a1-16 (-> arg0 vector 2)) - (a2-6 s4-1) - (f0-6 f30-0) - ) - (.lvf vf2 (&-> a2-6 quad)) - (.lvf vf1 (&-> a1-16 quad)) - (let ((a1-17 f0-6)) - (.mov vf3 a1-17) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-11 quad) vf4) - ) - (let ((a0-12 (-> arg0 trans))) - (let ((f0-7 (- f30-0))) - (.lvf vf2 (&-> s5-1 quad)) - (.lvf vf1 (&-> v1-4 quad)) - (let ((v1-5 f0-7)) - (.mov vf3 v1-5) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-12 quad) vf4) - ) - ) - (let ((v1-6 (-> arg0 trans))) - (let ((a0-13 (-> arg0 trans))) - (.lvf vf2 (&-> s4-1 quad)) - (.lvf vf1 (&-> a0-13 quad)) - ) - (let ((a0-14 f30-0)) - (.mov vf3 a0-14) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-6 quad) vf4) - ) + ) + (s4-1 (vector-cross! (new 'stack-no-clear 'vector) s5-1 v1-2)) + (f30-0 (-> obj radius)) + ) + (let ((v1-4 (edit-get-trans (-> obj vertex 0)))) + (vector+float*! (the-as vector (-> arg0 vector)) v1-4 s5-1 f30-0) + (vector+float*! (the-as vector (-> arg0 vector)) (the-as vector (-> arg0 vector)) s4-1 (- f30-0)) + (vector+float*! (-> arg0 vector 1) v1-4 s5-1 (- f30-0)) + (vector+float*! (-> arg0 vector 1) (-> arg0 vector 1) s4-1 (- f30-0)) + (vector+float*! (-> arg0 vector 2) v1-4 s5-1 f30-0) + (vector+float*! (-> arg0 vector 2) (-> arg0 vector 2) s4-1 f30-0) + (vector+float*! (-> arg0 trans) v1-4 s5-1 (- f30-0)) ) - 4 + (vector+float*! (-> arg0 trans) (-> arg0 trans) s4-1 f30-0) ) - (else - 0 - ) + 4 + ) + (else + 0 ) ) ) @@ -2784,7 +2420,7 @@ (else (vector-negate! (-> obj edit-plane-normal) (-> *math-camera* inv-camera-rot vector 2)) (let ((v1-9 (vector-float*! (-> obj edit-plane-center) (-> *math-camera* inv-camera-rot vector 2) 24576.0))) - (vector+! (the-as vector v1-9) (the-as vector v1-9) (-> *math-camera* trans)) + (vector+! v1-9 v1-9 (-> *math-camera* trans)) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/geometry/cylinder_REF.gc b/test/decompiler/reference/jak2/engine/geometry/cylinder_REF.gc index 5f5e0d963a..9af1a66866 100644 --- a/test/decompiler/reference/jak2/engine/geometry/cylinder_REF.gc +++ b/test/decompiler/reference/jak2/engine/geometry/cylinder_REF.gc @@ -3,49 +3,25 @@ ;; definition for method 10 of type cylinder (defmethod ray-capsule-intersect cylinder ((obj cylinder) (ray1 vector) (ray2 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((t2-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - 0.0 - 0.0 - (let ((f30-0 (ray-cylinder-intersect ray1 ray2 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) t2-0)) - ) - (let ((f0-5 (ray-sphere-intersect ray1 ray2 (-> obj origin) (-> obj radius)))) - (if (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) - (set! f30-0 f0-5) - ) - ) - (let ((v1-5 s4-0)) - (let ((a0-3 (-> obj origin)) - (a1-3 (-> obj axis)) - (f0-6 (-> obj length)) - ) - (.lvf vf2 (&-> a1-3 quad)) - (.lvf vf1 (&-> a0-3 quad)) - (let ((a0-4 f0-6)) - (.mov vf3 a0-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-5 quad) vf4) - ) - (let ((f0-8 (ray-sphere-intersect ray1 ray2 s4-0 (-> obj radius)))) - (if (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) - (set! f30-0 f0-8) - ) - ) - f30-0 + (let ((t2-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) ) + 0.0 + 0.0 + (let ((f30-0 (ray-cylinder-intersect ray1 ray2 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) t2-0)) + ) + (let ((f0-5 (ray-sphere-intersect ray1 ray2 (-> obj origin) (-> obj radius)))) + (if (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) + (set! f30-0 f0-5) + ) + ) + (vector+float*! s4-0 (-> obj origin) (-> obj axis) (-> obj length)) + (let ((f0-8 (ray-sphere-intersect ray1 ray2 s4-0 (-> obj radius)))) + (if (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) + (set! f30-0 f0-8) + ) + ) + f30-0 ) ) ) @@ -125,22 +101,7 @@ ) (dotimes (v1-7 8) (vector+! (-> s5-0 vert (+ v1-7 8)) (-> obj origin) s1-0) - (let ((a0-16 (-> s5-0 vert (+ v1-7 8)))) - (let ((a1-13 (-> s5-0 vert (+ v1-7 8))) - (a2-4 s0-0) - (f0-5 (the float v1-7)) - ) - (.lvf vf2 (&-> a2-4 quad)) - (.lvf vf1 (&-> a1-13 quad)) - (let ((a1-14 f0-5)) - (.mov vf3 a1-14) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-16 quad) vf4) - ) + (vector+float*! (-> s5-0 vert (+ v1-7 8)) (-> s5-0 vert (+ v1-7 8)) s0-0 (the float v1-7)) ) (dotimes (s0-1 8) (set! sv-944 (-> s5-0 vert s0-1)) @@ -246,51 +207,27 @@ ;; definition for method 10 of type cylinder-flat ;; INFO: Used lq/sq (defmethod ray-flat-cyl-intersect cylinder-flat ((obj cylinder-flat) (arg0 vector) (arg1 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - 0.0 - 0.0 - (let ((f30-0 (ray-cylinder-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) gp-0)) - ) - (let ((f0-5 (ray-arbitrary-circle-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius)))) - (when (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) - (set! f30-0 f0-5) - (set! (-> gp-0 quad) (-> obj origin quad)) - ) - ) - (let ((v1-5 s5-0)) - (let ((a0-5 (-> obj origin)) - (a1-3 (-> obj axis)) - (f0-6 (-> obj length)) - ) - (.lvf vf2 (&-> a1-3 quad)) - (.lvf vf1 (&-> a0-5 quad)) - (let ((a0-6 f0-6)) - (.mov vf3 a0-6) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-5 quad) vf4) - ) - (let ((f0-8 (ray-arbitrary-circle-intersect arg0 arg1 s5-0 (-> obj axis) (-> obj radius)))) - (when (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) - (set! f30-0 f0-8) - (set! (-> gp-0 quad) (-> s5-0 quad)) - ) - ) - f30-0 + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) ) + 0.0 + 0.0 + (let ((f30-0 (ray-cylinder-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius) (-> obj length) gp-0)) + ) + (let ((f0-5 (ray-arbitrary-circle-intersect arg0 arg1 (-> obj origin) (-> obj axis) (-> obj radius)))) + (when (and (>= f0-5 0.0) (or (< f30-0 0.0) (< f0-5 f30-0))) + (set! f30-0 f0-5) + (set! (-> gp-0 quad) (-> obj origin quad)) + ) + ) + (vector+float*! s5-0 (-> obj origin) (-> obj axis) (-> obj length)) + (let ((f0-8 (ray-arbitrary-circle-intersect arg0 arg1 s5-0 (-> obj axis) (-> obj radius)))) + (when (and (>= f0-8 0.0) (or (< f30-0 0.0) (< f0-8 f30-0))) + (set! f30-0 f0-8) + (set! (-> gp-0 quad) (-> s5-0 quad)) + ) + ) + f30-0 ) ) ) @@ -321,11 +258,7 @@ ;; WARN: Return type mismatch int vs none. (defmethod debug-draw cylinder-flat ((obj cylinder-flat) (arg0 vector4w)) (local-vars (sv-448 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) + (rlet ((vf0 :class vf) (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) @@ -356,40 +289,10 @@ ) (dotimes (v1-7 8) (vector+! (-> s5-0 vert (+ v1-7 1)) (-> obj origin) s1-0) - (let ((a0-16 (-> s5-0 vert (+ v1-7 1)))) - (let ((a1-13 (-> s5-0 vert (+ v1-7 1))) - (a2-4 s0-0) - (f0-5 (the float v1-7)) - ) - (.lvf vf2 (&-> a2-4 quad)) - (.lvf vf1 (&-> a1-13 quad)) - (let ((a1-14 f0-5)) - (.mov vf3 a1-14) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a0-16 quad) vf4) - ) + (vector+float*! (-> s5-0 vert (+ v1-7 1)) (-> s5-0 vert (+ v1-7 1)) s0-0 (the float v1-7)) ) (set! (-> s5-0 vert 0 quad) (-> obj origin quad)) - (let ((v1-11 (-> s5-0 vert 9))) - (let ((a0-19 (-> obj origin)) - (a1-15 (-> obj axis)) - (f0-6 (-> obj length)) - ) - (.lvf vf2 (&-> a1-15 quad)) - (.lvf vf1 (&-> a0-19 quad)) - (let ((a0-20 f0-6)) - (.mov vf3 a0-20) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-11 quad) vf4) - ) + (vector+float*! (-> s5-0 vert 9) (-> obj origin) (-> obj axis) (-> obj length)) (dotimes (s2-1 16) (dotimes (s1-1 10) (vector-matrix*! (-> s4-0 vert s1-1) (-> s5-0 vert s1-1) s3-0) @@ -398,9 +301,9 @@ (camera-line (-> s5-0 vert s1-1) (-> s5-0 vert (+ s1-1 -1)) arg0) ) ) - (let ((v1-28 s5-0)) + (let ((v1-29 s5-0)) (set! s5-0 s4-0) - (set! s4-0 v1-28) + (set! s4-0 v1-29) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/geometry/path_REF.gc b/test/decompiler/reference/jak2/engine/geometry/path_REF.gc index fc221fd096..14f1f7ba66 100644 --- a/test/decompiler/reference/jak2/engine/geometry/path_REF.gc +++ b/test/decompiler/reference/jak2/engine/geometry/path_REF.gc @@ -464,47 +464,28 @@ ;; definition for method 24 of type path-control (defmethod path-control-method-24 path-control ((obj path-control) (arg0 vector)) "TODO" - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 (-> obj curve num-cverts))) - (let ((f30-0 (/ 1.0 (the float s4-0)))) - (set-vector! arg0 0.0 0.0 0.0 0.0) - (dotimes (s3-0 s4-0) - (let ((s2-0 arg0)) - (let ((s1-0 arg0) - (v1-4 (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-0) 'interp)) - (f0-7 f30-0) - ) - (.lvf vf2 (&-> v1-4 quad)) - (.lvf vf1 (&-> s1-0 quad)) - (let ((v1-5 f0-7)) - (.mov vf3 v1-5) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s2-0 quad) vf4) - ) - ) - ) - (dotimes (s3-1 s4-0) - (let ((f0-10 - (vector-vector-distance arg0 (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-1) 'interp)) - ) - ) - (if (< (-> arg0 w) f0-10) - (set! (-> arg0 w) (+ 4096.0 f0-10)) - ) + (let ((s4-0 (-> obj curve num-cverts))) + (let ((f30-0 (/ 1.0 (the float s4-0)))) + (set-vector! arg0 0.0 0.0 0.0 0.0) + (dotimes (s3-0 s4-0) + (vector+float*! + arg0 + arg0 + (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-0) 'interp) + f30-0 ) ) ) - arg0 + (dotimes (s3-1 s4-0) + (let ((f0-10 + (vector-vector-distance arg0 (get-point-in-path! obj (new 'stack-no-clear 'vector) (the float s3-1) 'interp)) + ) + ) + (if (< (-> arg0 w) f0-10) + (set! (-> arg0 w) (+ 4096.0 f0-10)) + ) + ) + ) ) + arg0 ) diff --git a/test/decompiler/reference/jak2/engine/geometry/vol_REF.gc b/test/decompiler/reference/jak2/engine/geometry/vol_REF.gc index 31d49e42f1..1ced9a7e46 100644 --- a/test/decompiler/reference/jak2/engine/geometry/vol_REF.gc +++ b/test/decompiler/reference/jak2/engine/geometry/vol_REF.gc @@ -57,195 +57,132 @@ (sv-240 int) (sv-256 int) ) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (set! (-> obj volume-type) arg0) - (set! (-> obj point-count) 0) - (set! (-> obj first-point) (the-as (pointer vector) (-> arg1 data (-> arg1 length)))) - (set! (-> obj normal-count) 0) - (set! (-> obj first-normal) (the-as (pointer vector) (-> arg2 data (-> arg2 length)))) - (dotimes (s3-0 (-> obj num-planes)) - (set! sv-176 (new 'stack-no-clear 'vector)) - (set! (-> sv-176 quad) (the-as uint128 0)) - (set! sv-192 (new 'stack-no-clear 'vector)) - (set! (-> sv-192 quad) (the-as uint128 0)) - (set! sv-208 (new 'stack-no-clear 'vector)) - (set! (-> sv-208 quad) (the-as uint128 0)) - (set! sv-224 (new 'stack-no-clear 'vector)) - (set! (-> sv-224 quad) (the-as uint128 0)) - 0.0 - 0.0 - 0.0 - (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) - (let ((s1-0 (new-stack-vector0)) - (s0-0 0) - (s2-0 (-> obj plane)) - ) - (set! sv-240 0) - (while (< sv-240 (-> obj num-planes)) - (when (!= s3-0 sv-240) - (vector-float*! sv-176 (the-as vector (-> s2-0 sv-240)) (-> s2-0 sv-240 w)) - (vector-cross! sv-192 (the-as vector (-> s2-0 sv-240)) (the-as vector (-> s2-0 s3-0))) - (vector-normalize! sv-192 1.0) - (vector-cross! sv-208 sv-192 (the-as vector (-> s2-0 sv-240))) - (vector-normalize! sv-208 1.0) - (let ((f0-4 (plane-volume-intersect-dist (-> s2-0 s3-0) sv-176 sv-208))) - (when (!= f0-4 409600000.0) - (let ((v1-28 sv-224)) - (let ((a0-12 sv-176)) - (.lvf vf2 (&-> sv-208 quad)) - (.lvf vf1 (&-> a0-12 quad)) - ) - (let ((a0-13 f0-4)) - (.mov vf3 a0-13) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-28 quad) vf4) - ) - (set! sv-144 (new-stack-vector0)) - (set! sv-148 0.0) - (set! sv-152 0) - (set! sv-160 (new-stack-vector0)) - (set! (-> sv-144 quad) (-> sv-224 quad)) - (set! sv-256 0) - (while (< sv-256 (-> obj num-planes)) - (when (and (!= sv-256 s3-0) (!= sv-256 sv-240)) - (let ((f0-6 (plane-volume-intersect-dist (-> s2-0 sv-256) sv-144 sv-192))) - (cond - ((= f0-6 409600000.0) - ) - ((zero? sv-152) - (let ((v1-42 sv-144)) - (let ((a0-19 sv-144)) - (.lvf vf2 (&-> sv-192 quad)) - (.lvf vf1 (&-> a0-19 quad)) - ) - (let ((a0-20 f0-6)) - (.mov vf3 a0-20) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-42 quad) vf4) - ) - (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) - (set! sv-148 8192000.0) - (set! sv-152 1) - ) - ((begin (vector-float*! sv-224 sv-192 f0-6) (>= (vector-dot sv-224 sv-160) 0.0)) - ) - ((>= (vector-dot sv-224 (the-as vector (-> s2-0 sv-256))) 0.0) - (when (< (fabs f0-6) (fabs (the-as float sv-148))) - (set! sv-148 f0-6) - (set! sv-152 (+ sv-152 1)) - ) - ) - (else - (let ((v1-59 sv-144)) - (let ((a0-28 sv-144) - (a1-15 sv-192) - (f1-8 f0-6) - ) - (.lvf vf2 (&-> a1-15 quad)) - (.lvf vf1 (&-> a0-28 quad)) - (let ((a0-29 f1-8)) - (.mov vf3 a0-29) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-59 quad) vf4) - ) - (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) - (set! sv-152 (+ sv-152 1)) - (if (< (fabs f0-6) (fabs (the-as float sv-148))) - (set! sv-148 (- (the-as float sv-148) f0-6)) - (set! sv-148 0.0) - ) - ) - ) - ) - ) - (set! sv-256 (+ sv-256 1)) - ) - (cond - ((zero? sv-152) - ) - ((= (the-as float sv-148) 0.0) - ) - (else - (dotimes (v1-76 (-> obj num-planes)) - (when (and (!= v1-76 s3-0) (!= v1-76 sv-240)) - (if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-76))) (-> s2-0 v1-76 w))) - (goto cfg-42) - ) - ) - ) - (let ((v1-80 sv-224)) - (let ((a0-46 sv-144) - (a1-18 sv-192) - (f0-12 sv-148) - ) - (.lvf vf2 (&-> a1-18 quad)) - (.lvf vf1 (&-> a0-46 quad)) - (let ((a0-47 (the-as float f0-12))) - (.mov vf3 a0-47) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-80 quad) vf4) - ) + (set! (-> obj volume-type) arg0) + (set! (-> obj point-count) 0) + (set! (-> obj first-point) (the-as (pointer vector) (-> arg1 data (-> arg1 length)))) + (set! (-> obj normal-count) 0) + (set! (-> obj first-normal) (the-as (pointer vector) (-> arg2 data (-> arg2 length)))) + (dotimes (s3-0 (-> obj num-planes)) + (set! sv-176 (new 'stack-no-clear 'vector)) + (set! (-> sv-176 quad) (the-as uint128 0)) + (set! sv-192 (new 'stack-no-clear 'vector)) + (set! (-> sv-192 quad) (the-as uint128 0)) + (set! sv-208 (new 'stack-no-clear 'vector)) + (set! (-> sv-208 quad) (the-as uint128 0)) + (set! sv-224 (new 'stack-no-clear 'vector)) + (set! (-> sv-224 quad) (the-as uint128 0)) + 0.0 + 0.0 + 0.0 + (set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0)) + (let ((s1-0 (new-stack-vector0)) + (s0-0 0) + (s2-0 (-> obj plane)) + ) + (set! sv-240 0) + (while (< sv-240 (-> obj num-planes)) + (when (!= s3-0 sv-240) + (vector-float*! sv-176 (the-as vector (-> s2-0 sv-240)) (-> s2-0 sv-240 w)) + (vector-cross! sv-192 (the-as vector (-> s2-0 sv-240)) (the-as vector (-> s2-0 s3-0))) + (vector-normalize! sv-192 1.0) + (vector-cross! sv-208 sv-192 (the-as vector (-> s2-0 sv-240))) + (vector-normalize! sv-208 1.0) + (let ((f0-4 (plane-volume-intersect-dist (-> s2-0 s3-0) sv-176 sv-208))) + (when (!= f0-4 409600000.0) + (vector+float*! sv-224 sv-176 sv-208 f0-4) + (set! sv-144 (new-stack-vector0)) + (set! sv-148 0.0) + (set! sv-152 0) + (set! sv-160 (new-stack-vector0)) + (set! (-> sv-144 quad) (-> sv-224 quad)) + (set! sv-256 0) + (while (< sv-256 (-> obj num-planes)) + (when (and (!= sv-256 s3-0) (!= sv-256 sv-240)) + (let ((f0-6 (plane-volume-intersect-dist (-> s2-0 sv-256) sv-144 sv-192))) (cond - ((< (-> arg1 allocated-length) (+ (-> arg1 length) 2)) - (format 0 "ERROR : vol-control #x~X out of volume points~%" obj) + ((= f0-6 409600000.0) + ) + ((zero? sv-152) + (vector+float*! sv-144 sv-144 sv-192 f0-6) + (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) + (set! sv-148 8192000.0) + (set! sv-152 1) + ) + ((begin (vector-float*! sv-224 sv-192 f0-6) (>= (vector-dot sv-224 sv-160) 0.0)) + ) + ((>= (vector-dot sv-224 (the-as vector (-> s2-0 sv-256))) 0.0) + (when (< (fabs f0-6) (fabs (the-as float sv-148))) + (set! sv-148 f0-6) + (set! sv-152 (+ sv-152 1)) + ) ) (else - (set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad)) - (set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad)) - (+! (-> arg1 length) 2) - (+! (-> obj point-count) 2) + (vector+float*! sv-144 sv-144 sv-192 f0-6) + (set! (-> sv-160 quad) (-> s2-0 sv-256 quad)) + (set! sv-152 (+ sv-152 1)) + (if (< (fabs f0-6) (fabs (the-as float sv-148))) + (set! sv-148 (- (the-as float sv-148) f0-6)) + (set! sv-148 0.0) + ) ) ) - (vector+! s1-0 s1-0 sv-144) - (vector+! s1-0 s1-0 sv-224) - (+! s0-0 2) ) ) + (set! sv-256 (+ sv-256 1)) + ) + (cond + ((zero? sv-152) + ) + ((= (the-as float sv-148) 0.0) + ) + (else + (dotimes (v1-79 (-> obj num-planes)) + (when (and (!= v1-79 s3-0) (!= v1-79 sv-240)) + (if (< 4096.0 (- (vector-dot sv-144 (the-as vector (-> s2-0 v1-79))) (-> s2-0 v1-79 w))) + (goto cfg-42) + ) + ) + ) + (vector+float*! sv-224 sv-144 sv-192 (the-as float sv-148)) + (cond + ((< (-> arg1 allocated-length) (+ (-> arg1 length) 2)) + (format 0 "ERROR : vol-control #x~X out of volume points~%" obj) + ) + (else + (set! (-> arg1 data (-> arg1 length) quad) (-> sv-144 quad)) + (set! (-> arg1 data (+ (-> arg1 length) 1) quad) (-> sv-224 quad)) + (+! (-> arg1 length) 2) + (+! (-> obj point-count) 2) + ) + ) + (vector+! s1-0 s1-0 sv-144) + (vector+! s1-0 s1-0 sv-224) + (+! s0-0 2) + ) ) ) ) - (label cfg-42) - (set! sv-240 (+ sv-240 1)) ) - (when (nonzero? s0-0) - (vector-float*! s1-0 s1-0 (/ 1.0 (the float s0-0))) - (cond - ((< (-> arg2 allocated-length) (+ (-> arg2 length) 2)) - (format 0 "ERROR : vol-control #x~X out of volume normals~%" obj) - ) - (else - (set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad)) - (set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad)) - (+! (-> arg2 length) 2) - (set! (-> obj normal-count) (+ (-> obj normal-count) 2)) - ) + (label cfg-42) + (set! sv-240 (+ sv-240 1)) + ) + (when (nonzero? s0-0) + (vector-float*! s1-0 s1-0 (/ 1.0 (the float s0-0))) + (cond + ((< (-> arg2 allocated-length) (+ (-> arg2 length) 2)) + (format 0 "ERROR : vol-control #x~X out of volume normals~%" obj) + ) + (else + (set! (-> arg2 data (-> arg2 length) quad) (-> s1-0 quad)) + (set! (-> arg2 data (+ (-> arg2 length) 1) quad) (-> s2-0 s3-0 quad)) + (+! (-> arg2 length) 2) + (set! (-> obj normal-count) (+ (-> obj normal-count) 2)) ) ) ) ) - obj ) + obj ) ;; definition for method 10 of type plane-volume diff --git a/test/decompiler/reference/jak2/engine/gfx/mood/mood-funcs_REF.gc b/test/decompiler/reference/jak2/engine/gfx/mood/mood-funcs_REF.gc index b179f8b49b..5716acf485 100644 --- a/test/decompiler/reference/jak2/engine/gfx/mood/mood-funcs_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/mood/mood-funcs_REF.gc @@ -1299,50 +1299,27 @@ ;; definition for function update-drill-lights ;; WARN: Return type mismatch int vs none. (defun update-drill-lights ((arg0 mood-context)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((a1-0 (-> arg0 light-group)) - (s5-0 (-> arg0 light-group 1)) - (gp-0 (-> arg0 light-group 2)) - ) - (mem-copy! (the-as pointer s5-0) (the-as pointer a1-0) 192) - (let ((a0-2 (new 'static 'vector :x 0.902 :y 0.675)) - (v1-0 (-> s5-0 ambi color)) - ) - (let ((a1-1 (-> s5-0 ambi color)) - (f0-0 0.3) - ) - (.lvf vf2 (&-> a0-2 quad)) - (.lvf vf1 (&-> a1-1 quad)) - (let ((a0-3 f0-0)) - (.mov vf3 a0-3) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) + (let ((a1-0 (-> arg0 light-group)) + (s5-0 (-> arg0 light-group 1)) + (gp-0 (-> arg0 light-group 2)) ) - (let ((v1-1 (-> gp-0 dir0))) - (set! (-> v1-1 direction x) 0.0) - (set! (-> v1-1 direction y) 1.0) - (set! (-> v1-1 direction z) 0.0) - (set! (-> v1-1 direction w) 1.0) - ) - (set-vector! (-> gp-0 dir0 color) 0.3 0.3 0.35 1.0) - (set-vector! (-> gp-0 ambi color) 0.3 0.3 0.35 1.0) - (set! (-> gp-0 dir0 extra x) 0.5) - (set! (-> gp-0 ambi extra x) 0.5) + (mem-copy! (the-as pointer s5-0) (the-as pointer a1-0) 192) + (let ((a0-2 (new 'static 'vector :x 0.902 :y 0.675))) + (vector+float*! (the-as vector (-> s5-0 ambi color)) (the-as vector (-> s5-0 ambi color)) a0-2 0.3) ) - 0 - (none) + (let ((v1-2 (-> gp-0 dir0))) + (set! (-> v1-2 direction x) 0.0) + (set! (-> v1-2 direction y) 1.0) + (set! (-> v1-2 direction z) 0.0) + (set! (-> v1-2 direction w) 1.0) + ) + (set-vector! (-> gp-0 dir0 color) 0.3 0.3 0.35 1.0) + (set-vector! (-> gp-0 ambi color) 0.3 0.3 0.35 1.0) + (set! (-> gp-0 dir0 extra x) 0.5) + (set! (-> gp-0 ambi extra x) 0.5) ) + 0 + (none) ) ;; definition for function update-mood-drill diff --git a/test/decompiler/reference/jak2/engine/math/vector_REF.gc b/test/decompiler/reference/jak2/engine/math/vector_REF.gc index c42a6050cc..975d8427fd 100644 --- a/test/decompiler/reference/jak2/engine/math/vector_REF.gc +++ b/test/decompiler/reference/jak2/engine/math/vector_REF.gc @@ -493,128 +493,39 @@ ;; definition for function vector-v+! (defun vector-v+! ((arg0 vector) (arg1 vector) (arg2 vector)) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((f0-0 (-> pp clock seconds-per-frame))) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (let ((a1-1 f0-0)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg1 arg2 (-> pp clock seconds-per-frame)) + arg0 ) ) ;; definition for function vector-v*float+! (defun vector-v*float+! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((f0-1 (* arg3 (-> pp clock seconds-per-frame)))) - (.lvf vf2 (&-> arg2 quad)) - (.lvf vf1 (&-> arg1 quad)) - (let ((a1-1 f0-1)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg1 arg2 (* arg3 (-> pp clock seconds-per-frame))) + arg0 ) ) ;; definition for function vector-v++! (defun vector-v++! ((arg0 vector) (arg1 vector)) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a2-0 arg0) - (f0-0 (-> pp clock seconds-per-frame)) - ) - (.lvf vf2 (&-> arg1 quad)) - (.lvf vf1 (&-> a2-0 quad)) - (let ((a1-1 f0-0)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg0 arg1 (-> pp clock seconds-per-frame)) + arg0 ) ) ;; definition for function vector-v*float! -;; WARN: Return type mismatch uint vs vector. (defun vector-v*float! ((arg0 vector) (arg1 vector) (arg2 float)) (with-pp - (the-as vector (vector-float*! arg0 arg1 (* arg2 (-> pp clock seconds-per-frame)))) + (vector-float*! arg0 arg1 (* arg2 (-> pp clock seconds-per-frame))) ) ) ;; definition for function vector-v*float++! (defun vector-v*float++! ((arg0 vector) (arg1 vector) (arg2 float)) (with-pp - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a3-0 arg0) - (f0-1 (* arg2 (-> pp clock seconds-per-frame))) - ) - (.lvf vf2 (&-> arg1 quad)) - (.lvf vf1 (&-> a3-0 quad)) - (let ((a1-1 f0-1)) - (.mov vf3 a1-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - arg0 - ) + (vector+float*! arg0 arg0 arg1 (* arg2 (-> pp clock seconds-per-frame))) + arg0 ) ) diff --git a/test/decompiler/reference/jak2/engine/physics/chain-physics_REF.gc b/test/decompiler/reference/jak2/engine/physics/chain-physics_REF.gc index 5b171773a4..bf57fd7886 100644 --- a/test/decompiler/reference/jak2/engine/physics/chain-physics_REF.gc +++ b/test/decompiler/reference/jak2/engine/physics/chain-physics_REF.gc @@ -81,7 +81,7 @@ ;; WARN: Return type mismatch int vs none. (defmethod update chain-physics ((obj chain-physics) (arg0 process-drawable)) (local-vars - (v1-77 float) + (v1-78 float) (f0-11 float) (sv-272 chain-physics-joint) (sv-288 vector) @@ -214,39 +214,27 @@ (.mul.x.vf acc vf2 vf3) (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) (.svf (&-> sv-384 quad) vf4) - (let ((v1-57 sv-528)) - (let ((a0-25 s3-0)) - (.lvf vf2 (&-> sv-400 quad)) - (.lvf vf1 (&-> a0-25 quad)) - ) - (let ((a0-26 f28-1)) - (.mov vf3 a0-26) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-57 quad) vf4) - ) + (vector+float*! sv-528 s3-0 sv-400 f28-1) ) ) (chain-physics-method-17 obj sv-528) (set! sv-432 (new 'stack-no-clear 'vector)) - (let ((v1-60 s3-0) - (a0-28 sv-528) + (let ((v1-61 s3-0) + (a0-27 sv-528) ) - (.lvf vf4 (&-> v1-60 quad)) - (.lvf vf5 (&-> a0-28 quad)) + (.lvf vf4 (&-> v1-61 quad)) + (.lvf vf5 (&-> a0-27 quad)) ) (.mov.vf vf6 vf0 :mask #b1000) (.sub.vf vf6 vf4 vf5 :mask #b111) (.svf (&-> sv-432 quad) vf6) (vector-normalize-ret-len! sv-432 1.0) (set! sv-416 (new 'stack-no-clear 'vector)) - (let ((v1-63 sv-528) - (a0-31 (-> sv-272 position)) + (let ((v1-64 sv-528) + (a0-30 (-> sv-272 position)) ) - (.lvf vf4 (&-> v1-63 quad)) - (.lvf vf5 (&-> a0-31 quad)) + (.lvf vf4 (&-> v1-64 quad)) + (.lvf vf5 (&-> a0-30 quad)) ) (.mov.vf vf6 vf0 :mask #b1000) (.sub.vf vf6 vf4 vf5 :mask #b111) @@ -264,16 +252,16 @@ ) ) ) - (let ((v1-72 (-> sv-272 velocity))) + (let ((v1-73 (-> sv-272 velocity))) (.lvf vf2 (&-> sv-432 quad)) (.lvf vf1 (&-> sv-416 quad)) - (let ((a0-38 f0-11)) - (.mov vf3 a0-38) + (let ((a0-37 f0-11)) + (.mov vf3 a0-37) ) (.add.x.vf vf4 vf0 vf0 :mask #b1000) (.mul.x.vf acc vf2 vf3) (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-72 quad) vf4) + (.svf (&-> v1-73 quad) vf4) ) (vector+! sv-528 (-> sv-272 position) (-> sv-272 velocity)) (let ((a2-9 (vector-! (new 'stack-no-clear 'vector) s3-0 sv-528))) @@ -283,8 +271,8 @@ (.mul.x.vf acc vf2 vf1 :mask #b1) (.add.mul.y.vf acc vf2 vf1 acc :mask #b1) (.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1) - (.mov v1-77 vf1) - (let* ((f0-13 v1-77) + (.mov v1-78 vf1) + (let* ((f0-13 v1-78) (f1-6 (* (-> obj maximum-stretch) (-> obj joint-length))) (f2-3 f1-6) ) @@ -306,11 +294,11 @@ (vector-cross! (the-as vector (-> s4-0 vector)) (-> s4-0 vector 1) s2-0) (vector-normalize! (the-as vector (-> s4-0 vector)) 1.0) (set! sv-496 (new 'stack-no-clear 'vector)) - (let ((v1-96 (-> sv-272 old-x)) - (a0-52 (-> s4-0 vector)) + (let ((v1-97 (-> sv-272 old-x)) + (a0-51 (-> s4-0 vector)) ) - (.lvf vf1 (&-> v1-96 quad)) - (.lvf vf2 (&-> a0-52 0 quad)) + (.lvf vf1 (&-> v1-97 quad)) + (.lvf vf2 (&-> a0-51 0 quad)) ) (.outer.product.a.vf acc vf1 vf2) (.outer.product.b.vf vf3 vf2 vf1 acc) @@ -326,8 +314,8 @@ (set! sv-448 (-> s4-0 vector)) (let ((f0-20 (cos (-> obj axial-slop)))) (.lvf vf1 (&-> sv-448 0 quad)) - (let ((v1-106 f0-20)) - (.mov vf2 v1-106) + (let ((v1-107 f0-20)) + (.mov vf2 v1-107) ) ) (.add.x.vf vf1 vf0 vf0 :mask #b1000) @@ -338,8 +326,8 @@ (let ((f0-22 (sin (-> obj axial-slop)))) (.lvf vf2 (&-> sv-496 quad)) (.lvf vf1 (&-> sv-480 0 quad)) - (let ((v1-112 f0-22)) - (.mov vf3 v1-112) + (let ((v1-113 f0-22)) + (.mov vf3 v1-113) ) ) (.add.x.vf vf4 vf0 vf0 :mask #b1000) diff --git a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc index 1e52aa5a99..ba0a6fab8c 100644 --- a/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc +++ b/test/decompiler/reference/jak2/engine/physics/trajectory_REF.gc @@ -3,33 +3,9 @@ ;; definition for method 9 of type trajectory (defmethod compute-trans-at-time trajectory ((obj trajectory) (arg0 float) (arg1 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg1)) - (let ((a3-0 (-> obj initial-position)) - (t0-0 (-> obj initial-velocity)) - (f0-0 arg0) - ) - (.lvf vf2 (&-> t0-0 quad)) - (.lvf vf1 (&-> a3-0 quad)) - (let ((a3-1 f0-0)) - (.mov vf3 a3-1) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-0 quad) vf4) - ) - (+! (-> arg1 y) (* 0.5 arg0 arg0 (-> obj gravity))) - arg1 - ) + (vector+float*! arg1 (-> obj initial-position) (-> obj initial-velocity) arg0) + (+! (-> arg1 y) (* 0.5 arg0 arg0 (-> obj gravity))) + arg1 ) ;; definition for method 10 of type trajectory @@ -255,43 +231,20 @@ ;; definition for method 10 of type point-tracker ;; INFO: Used lq/sq (defmethod point-tracker-method-10 point-tracker ((obj point-tracker) (arg0 vector) (arg1 vector) (arg2 vector) (arg3 float)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cond - ((>= 0.0 arg3) - (set! (-> arg0 quad) (-> arg1 quad)) - ) - ((>= arg3 1.0) - (set! (-> arg0 quad) (-> arg2 quad)) - ) - (else - (let ((a1-1 arg0)) - (let ((v1-3 arg2) - (a0-6 (vector-! (new 'stack-no-clear 'vector) arg1 arg2)) - (f0-3 (- 1.0 arg3)) - ) - (.lvf vf2 (&-> a0-6 quad)) - (.lvf vf1 (&-> v1-3 quad)) - (let ((v1-4 f0-3)) - (.mov vf3 v1-4) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a1-1 quad) vf4) - (vector-lerp! arg0 a1-1 arg2 arg3) - ) + (cond + ((>= 0.0 arg3) + (set! (-> arg0 quad) (-> arg1 quad)) + ) + ((>= arg3 1.0) + (set! (-> arg0 quad) (-> arg2 quad)) + ) + (else + (let ((a1-2 (vector+float*! arg0 arg2 (vector-! (new 'stack-no-clear 'vector) arg1 arg2) (- 1.0 arg3)))) + (vector-lerp! arg0 a1-2 arg2 arg3) ) ) - arg0 ) + arg0 ) ;; definition for method 11 of type point-tracker 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 2e0a3b136e..37ad081e7a 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 @@ -273,9 +273,9 @@ (f0-3 (vector-dot (-> self control unknown-vector34) v1-11)) (s4-1 (vector-float*! (new 'stack-no-clear 'vector) (-> self control unknown-vector34) f0-3)) ) - (vector-flatten! (the-as vector s4-1) (the-as vector s4-1) (-> *camera* local-down)) - (if (< 0.0 (vector-dot (the-as vector s4-1) s5-0)) - (vector-negate! gp-0 (the-as vector s4-1)) + (vector-flatten! s4-1 s4-1 (-> *camera* local-down)) + (if (< 0.0 (vector-dot s4-1 s5-0)) + (vector-negate! gp-0 s4-1) ) ) ) @@ -329,148 +329,131 @@ ;; ERROR: Function may read a register that is not set: a3 (defbehavior target-board-ground-check target () (local-vars (a0-4 object) (a1-0 object) (a2-3 number) (a3-0 number)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when (board-on-ground?) - (when (!= (-> self board troty-cum) 0.0) - (let ((f30-0 (fabs (-> self board troty-cum))) - (f28-0 (vector-y-angle (-> self control transv))) - (f0-2 (y-angle (-> self control))) - ) - (if (< (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) - (set! f28-0 (+ 32768.0 f28-0)) - ) - (let ((t9-3 deg-diff)) - (set! a0-4 f0-2) - (set! a1-0 f28-0) - (let ((f0-5 (fabs (t9-3 (the-as float a0-4) (the-as float a1-0))))) - (when (and (>= f30-0 49152.0) (>= 4551.1113 f0-5)) - (cond - ((>= f30-0 191146.67) - (add-to-trick-list (-> self board) (board-tricks board-boost) 2000.0) - ) - ((>= f30-0 126520.89) - (add-to-trick-list (-> self board) (board-tricks board-boost) 1000.0) - ) - (else - (add-to-trick-list (-> self board) (board-tricks board-boost) 500.0) - ) + (when (board-on-ground?) + (when (!= (-> self board troty-cum) 0.0) + (let ((f30-0 (fabs (-> self board troty-cum))) + (f28-0 (vector-y-angle (-> self control transv))) + (f0-2 (y-angle (-> self control))) + ) + (if (< (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) + (set! f28-0 (+ 32768.0 f28-0)) + ) + (let ((t9-3 deg-diff)) + (set! a0-4 f0-2) + (set! a1-0 f28-0) + (let ((f0-5 (fabs (t9-3 (the-as float a0-4) (the-as float a1-0))))) + (when (and (>= f30-0 49152.0) (>= 4551.1113 f0-5)) + (cond + ((>= f30-0 191146.67) + (add-to-trick-list (-> self board) (board-tricks board-boost) 2000.0) + ) + ((>= f30-0 126520.89) + (add-to-trick-list (-> self board) (board-tricks board-boost) 1000.0) + ) + (else + (add-to-trick-list (-> self board) (board-tricks board-boost) 500.0) ) - (let ((t9-7 lerp-scale) - (a0-8 20480.0) - (a1-4 40960.0) + ) + (let ((t9-7 lerp-scale) + (a0-8 20480.0) + (a1-4 40960.0) + ) + (set! a2-3 f30-0) + (set! a3-0 49152.0) + (let ((f0-8 (t9-7 a0-8 a1-4 (the-as float a2-3) (the-as float a3-0) 182044.44)) + (v1-28 (-> self control transv)) ) - (set! a2-3 f30-0) - (set! a3-0 49152.0) - (let ((f0-8 (t9-7 a0-8 a1-4 (the-as float a2-3) (the-as float a3-0) 182044.44)) - (v1-28 (-> self control transv)) + (set! a0-4 (-> self control transv)) + (set! a1-0 (-> self control unknown-matrix01 vector 2)) + (vector+float*! v1-28 (the-as vector a0-4) (the-as vector a1-0) f0-8) + ) + ) + (when (< (vector-length (-> self control transv)) 114688.0) + (let ((t9-8 vector-normalize!)) + (set! a0-4 (-> self control transv)) + (set! a1-0 114688.0) + (t9-8 (the-as vector a0-4) (the-as float a1-0)) + ) + ) + (when (zero? (logand (-> self control old-status) (cshape-moving-flags on-surface))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control trans quad)) + (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) + (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when s5-0 + (let ((t9-10 (method-of-type part-tracker activate))) + (t9-10 (the-as part-tracker s5-0) self (symbol->string (-> part-tracker symbol)) (the-as pointer #x70004000)) ) - (let ((a0-10 (-> self control transv))) - (set! a1-0 (-> self control unknown-matrix01 vector 2)) - (.lvf vf2 (&-> (the-as vector a1-0) quad)) - (.lvf vf1 (&-> a0-10 quad)) - ) - (set! a0-4 f0-8) - (.mov vf3 a0-4) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-28 quad) vf4) - ) - ) - (when (< (vector-length (-> self control transv)) 114688.0) - (let ((t9-8 vector-normalize!)) - (set! a0-4 (-> self control transv)) - (set! a1-0 114688.0) - (t9-8 (the-as vector a0-4) (the-as float a1-0)) - ) - ) - (when (zero? (logand (-> self control old-status) (cshape-moving-flags on-surface))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control trans quad)) - (set! (-> gp-0 y) (+ 2048.0 (-> gp-0 y))) - (let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when s5-0 - (let ((t9-10 (method-of-type part-tracker activate))) - (t9-10 (the-as part-tracker s5-0) self (symbol->string (-> part-tracker symbol)) (the-as pointer #x70004000)) - ) - (let ((t9-11 run-function-in-process) - (a0-13 s5-0) - (a1-8 part-tracker-init) - (a2-8 (-> *part-group-id-table* 119)) - (a3-2 0) - (t0-1 #f) - (t1-0 #f) - (t2-0 #f) - (t3-0 *launch-matrix*) - ) - (set! (-> t3-0 trans quad) (-> gp-0 quad)) - ((the-as (function object object object object object object object object none) t9-11) - a0-13 - a1-8 - a2-8 - a3-2 - t0-1 - t1-0 - t2-0 - t3-0 - ) - ) - (-> s5-0 ppointer) + (let ((t9-11 run-function-in-process) + (a0-12 s5-0) + (a1-8 part-tracker-init) + (a2-8 (-> *part-group-id-table* 119)) + (a3-2 0) + (t0-1 #f) + (t1-0 #f) + (t2-0 #f) + (t3-0 *launch-matrix*) + ) + (set! (-> t3-0 trans quad) (-> gp-0 quad)) + ((the-as (function object object object object object object object object none) t9-11) + a0-12 + a1-8 + a2-8 + a3-2 + t0-1 + t1-0 + t2-0 + t3-0 + ) ) + (-> s5-0 ppointer) ) - (let* ((s4-0 (get-process *default-dead-pool* manipy #x4000)) - (s5-1 - (when s4-0 - (let ((t9-13 (method-of-type manipy activate))) - (t9-13 (the-as manipy s4-0) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) - ) - (let ((s5-2 run-function-in-process) - (s3-0 s4-0) - (s2-0 manipy-init) - (s1-0 (-> self entity)) - (t0-2 (art-group-get-by-name *level* "skel-generic-blast" (the-as (pointer uint32) #f))) - (t1-1 #f) - ) - 0 - ((the-as (function object object object object object object none) s5-2) s3-0 s2-0 gp-0 s1-0 t0-2 t1-1) - ) - (-> s4-0 ppointer) + ) + (let* ((s4-0 (get-process *default-dead-pool* manipy #x4000)) + (s5-1 + (when s4-0 + (let ((t9-13 (method-of-type manipy activate))) + (t9-13 (the-as manipy s4-0) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000)) ) + (let ((s5-2 run-function-in-process) + (s3-0 s4-0) + (s2-0 manipy-init) + (s1-0 (-> self entity)) + (t0-2 (art-group-get-by-name *level* "skel-generic-blast" (the-as (pointer uint32) #f))) + (t1-1 #f) + ) + 0 + ((the-as (function object object object object object object none) s5-2) s3-0 s2-0 gp-0 s1-0 t0-2 t1-1) + ) + (-> s4-0 ppointer) ) ) - (when s5-1 - (quaternion-copy! (-> (the-as board (-> s5-1 0)) root quat) (-> self control unknown-quaternion00)) - (send-event (ppointer->process s5-1) 'anim-mode 'play1) - (send-event (ppointer->process s5-1) 'anim "idle") - (send-event (ppointer->process s5-1) 'speed #x3fc00000) - (set-vector! (-> (the-as board (-> s5-1 0)) root scale) 0.2 0.4 0.2 1.0) - ) + ) + (when s5-1 + (quaternion-copy! (-> (the-as board (-> s5-1 0)) root quat) (-> self control unknown-quaternion00)) + (send-event (ppointer->process s5-1) 'anim-mode 'play1) + (send-event (ppointer->process s5-1) 'anim "idle") + (send-event (ppointer->process s5-1) 'speed #x3fc00000) + (set-vector! (-> (the-as board (-> s5-1 0)) root scale) 0.2 0.4 0.2 1.0) ) ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) - (let ((gp-1 sound-play-by-name)) - (let ((s5-3 (make-u128 #x74736f (the-as uint #x6f622d6472616f62)))) - (set! a1-0 (new-sound-id)) - (set! a2-3 1024) - (set! a3-0 0) - (set! a0-4 s5-3) - ) - (gp-1 - (the-as sound-name a0-4) - (the-as sound-id a1-0) - (the-as int a2-3) - (the-as int a3-0) - 0 - (sound-group sfx) - #t - ) + ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) + (let ((gp-1 sound-play-by-name)) + (let ((s5-3 (make-u128 #x74736f (the-as uint #x6f622d6472616f62)))) + (set! a1-0 (new-sound-id)) + (set! a2-3 1024) + (set! a3-0 0) + (set! a0-4 s5-3) + ) + (gp-1 + (the-as sound-name a0-4) + (the-as sound-id a1-0) + (the-as int a2-3) + (the-as int a3-0) + 0 + (sound-group sfx) + #t ) ) ) @@ -478,11 +461,11 @@ ) ) ) - (target-board-resolve-points (the-as float a0-4) (the-as float a1-0) (the-as float a2-3) (the-as float a3-0)) ) - (set! (-> self board turn-anim-tilt?) #t) - (none) + (target-board-resolve-points (the-as float a0-4) (the-as float a1-0) (the-as float a2-3) (the-as float a3-0)) ) + (set! (-> self board turn-anim-tilt?) #t) + (none) ) ;; definition for function target-board-halfpipe-check @@ -1173,11 +1156,7 @@ (let ((v1-11 (new-stack-vector0))) (let ((f0-2 (vector-dot (-> self control unknown-vector36) (-> self control transv)))) 0.0 - (vector-! - v1-11 - (-> self control transv) - (the-as vector (vector-float*! v1-11 (-> self control unknown-vector36) f0-2)) - ) + (vector-! v1-11 (-> self control transv) (vector-float*! v1-11 (-> self control unknown-vector36) f0-2)) ) (let* ((f0-3 (vector-length v1-11)) (f1-1 f0-3) @@ -1185,8 +1164,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control unknown-vector36) f2-0)) - (the-as vector (vector-float*! v1-11 v1-11 (/ f0-3 f1-1))) + (vector-float*! (-> self control transv) (-> self control unknown-vector36) f2-0) + (vector-float*! v1-11 v1-11 (/ f0-3 f1-1)) ) ) ) @@ -1248,7 +1227,7 @@ (let ((v1-40 (new-stack-vector0))) (let ((f0-5 (vector-dot gp-0 (-> self control transv)))) 0.0 - (vector-! v1-40 (-> self control transv) (the-as vector (vector-float*! v1-40 gp-0 f0-5))) + (vector-! v1-40 (-> self control transv) (vector-float*! v1-40 gp-0 f0-5)) ) (let* ((f0-6 (vector-length v1-40)) (f1-2 f0-6) @@ -1256,8 +1235,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) gp-0 f2-0)) - (the-as vector (vector-float*! v1-40 v1-40 (/ f0-6 f1-2))) + (vector-float*! (-> self control transv) gp-0 f2-0) + (vector-float*! v1-40 v1-40 (/ f0-6 f1-2)) ) ) ) @@ -1308,11 +1287,7 @@ (f0-2 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-16 - (-> self control transv) - (the-as vector (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-2)) - ) + (vector-! v1-16 (-> self control transv) (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-2)) (let* ((f1-4 (vector-length v1-16)) (f2-0 f1-4) ) @@ -1321,8 +1296,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2)) - (the-as vector (vector-float*! v1-16 v1-16 (/ f1-4 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2) + (vector-float*! v1-16 v1-16 (/ f1-4 f2-0)) ) ) ) @@ -1974,7 +1949,7 @@ (vector-! v1-179 (-> self control transv) - (the-as vector (vector-float*! v1-179 (-> self control dynam gravity-normal) f0-48)) + (vector-float*! v1-179 (-> self control dynam gravity-normal) f0-48) ) (let* ((f1-5 (vector-length v1-179)) (f2-2 f1-5) @@ -1984,8 +1959,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-48)) - (the-as vector (vector-float*! v1-179 v1-179 (/ f1-5 f2-2))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-48) + (vector-float*! v1-179 v1-179 (/ f1-5 f2-2)) ) ) ) @@ -2200,11 +2175,7 @@ (f0-2 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-6 - (-> self control transv) - (the-as vector (vector-float*! v1-6 (-> self control dynam gravity-normal) f0-2)) - ) + (vector-! v1-6 (-> self control transv) (vector-float*! v1-6 (-> self control dynam gravity-normal) f0-2)) (let* ((f1-3 (vector-length v1-6)) (f2-0 f1-3) ) @@ -2213,8 +2184,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2)) - (the-as vector (vector-float*! v1-6 v1-6 (/ f1-3 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-2) + (vector-float*! v1-6 v1-6 (/ f1-3 f2-0)) ) ) ) @@ -2386,128 +2357,106 @@ (none) ) :trans (behavior () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? 'board) - ) - (let ((v1-15 (/ (- (-> self clock frame-counter) (-> self board ride-start-time)) 300))) - (if (> v1-15 0) - (add-to-trick-list (-> self board) (board-tricks board-rail) (* 100.0 (the float v1-15))) - ) - ) - (set! (-> self control trans y) (+ 1228.8 (-> self control trans y))) - (go - target-board-jump - (-> *TARGET_BOARD-bank* jump-height-min) - (-> *TARGET_BOARD-bank* jump-height-max) - (the-as symbol *board-ride-jump-mods*) - ) - ) - (if (cpad-pressed? (-> self control unknown-cpad-info00 number) circle square) - (set! (-> self control unknown-word04) (the-as uint #f)) - ) - (if (-> self control unknown-spool-anim00) - (set! (-> self board ride-button-time) (-> self clock frame-counter)) - ) - (set! (-> self board turn-anim-targ) (* (-> self board ride-lean) (- (-> *TARGET_BOARD-bank* turn-frames)))) - (cond - ((= (-> self board ride-speed) 0.0) - (let ((v1-43 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> v1-43 command) (sound-command set-param)) - (set! (-> v1-43 id) (the-as sound-id (-> self board ride-sound-id))) - (set! (-> v1-43 params volume) -4) - (set! (-> v1-43 auto-time) 24) - (set! (-> v1-43 auto-from) 2) - (set! (-> v1-43 params mask) (the-as uint 17)) - (-> v1-43 id) - ) - ) - (else - (let ((f30-1 - (* (lerp-scale 0.7 1.0 (fabs (-> self board ride-lean)) 0.0 1.0) - (lerp-scale - 0.8 - 1.0 - (fabs (-> self board ride-speed)) - 0.0 - (* 0.5 (-> self control unknown-surface00 transv-max)) - ) - ) - ) - (f0-23 - (+ (lerp-scale 0.0 0.05 (fabs (-> self board ride-lean)) 0.0 1.0) - (lerp-scale - -0.05 - 0.0 - (fabs (-> self board ride-speed)) - 0.0 - (* 0.3 (-> self control unknown-surface00 transv-max)) - ) - ) - ) - ) - (sound-play-by-name - (static-sound-name "board-rail") - (the-as sound-id (-> self board ride-sound-id)) - (the int (* 1024.0 f30-1)) - (the int (* 1524.0 f0-23)) - 0 - (sound-group sfx) - #t - ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? 'board) + ) + (let ((v1-15 (/ (- (-> self clock frame-counter) (-> self board ride-start-time)) 300))) + (if (> v1-15 0) + (add-to-trick-list (-> self board) (board-tricks board-rail) (* 100.0 (the float v1-15))) ) - ) ) - (when (< 4096.0 (-> self board ride-speed)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((v1-63 (-> self control trans)) - (a0-40 (-> self board ride-dir)) - (f0-27 -4096.0) - ) - (.lvf vf2 (&-> a0-40 quad)) - (.lvf vf1 (&-> v1-63 quad)) - (let ((v1-64 f0-27)) - (.mov vf3 v1-64) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> gp-0 quad) vf4) - (set! (-> *part-id-table* 431 init-specs 1 initial-valuef) - (lerp-scale - 0.1 - 2.0 - (fabs (-> self board ride-speed)) - 0.0 - (* 0.3 (-> self control unknown-surface00 transv-max)) - ) - ) - (let ((t9-10 sp-launch-particles-var) - (a0-42 *sp-particle-system-2d*) - (a1-12 (-> *part-id-table* 431)) - (a2-9 *launch-matrix*) - ) - (set! (-> a2-9 trans quad) (-> gp-0 quad)) - (t9-10 a0-42 a1-12 a2-9 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) - ) - ) + (set! (-> self control trans y) (+ 1228.8 (-> self control trans y))) + (go + target-board-jump + (-> *TARGET_BOARD-bank* jump-height-min) + (-> *TARGET_BOARD-bank* jump-height-max) + (the-as symbol *board-ride-jump-mods*) ) - (none) ) + (if (cpad-pressed? (-> self control unknown-cpad-info00 number) circle square) + (set! (-> self control unknown-word04) (the-as uint #f)) + ) + (if (-> self control unknown-spool-anim00) + (set! (-> self board ride-button-time) (-> self clock frame-counter)) + ) + (set! (-> self board turn-anim-targ) (* (-> self board ride-lean) (- (-> *TARGET_BOARD-bank* turn-frames)))) + (cond + ((= (-> self board ride-speed) 0.0) + (let ((v1-43 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> v1-43 command) (sound-command set-param)) + (set! (-> v1-43 id) (the-as sound-id (-> self board ride-sound-id))) + (set! (-> v1-43 params volume) -4) + (set! (-> v1-43 auto-time) 24) + (set! (-> v1-43 auto-from) 2) + (set! (-> v1-43 params mask) (the-as uint 17)) + (-> v1-43 id) + ) + ) + (else + (let ((f30-1 + (* (lerp-scale 0.7 1.0 (fabs (-> self board ride-lean)) 0.0 1.0) + (lerp-scale + 0.8 + 1.0 + (fabs (-> self board ride-speed)) + 0.0 + (* 0.5 (-> self control unknown-surface00 transv-max)) + ) + ) + ) + (f0-23 + (+ (lerp-scale 0.0 0.05 (fabs (-> self board ride-lean)) 0.0 1.0) + (lerp-scale + -0.05 + 0.0 + (fabs (-> self board ride-speed)) + 0.0 + (* 0.3 (-> self control unknown-surface00 transv-max)) + ) + ) + ) + ) + (sound-play-by-name + (static-sound-name "board-rail") + (the-as sound-id (-> self board ride-sound-id)) + (the int (* 1024.0 f30-1)) + (the int (* 1524.0 f0-23)) + 0 + (sound-group sfx) + #t + ) + ) + ) + ) + (when (< 4096.0 (-> self board ride-speed)) + (let ((gp-1 (vector+float*! (new 'stack-no-clear 'vector) (-> self control trans) (-> self board ride-dir) -4096.0)) + ) + (set! (-> *part-id-table* 431 init-specs 1 initial-valuef) + (lerp-scale + 0.1 + 2.0 + (fabs (-> self board ride-speed)) + 0.0 + (* 0.3 (-> self control unknown-surface00 transv-max)) + ) + ) + (let ((t9-10 sp-launch-particles-var) + (a0-42 *sp-particle-system-2d*) + (a1-12 (-> *part-id-table* 431)) + (a2-9 *launch-matrix*) + ) + (set! (-> a2-9 trans quad) (-> gp-1 quad)) + (t9-10 a0-42 a1-12 a2-9 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0) + ) + ) + ) + (none) ) :code (behavior ((arg0 symbol) (arg1 object) (arg2 object) (arg3 float)) (let* ((v1-1 (-> self board ride-mode)) @@ -2582,11 +2531,7 @@ (f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-12 - (-> self control transv) - (the-as vector (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-1)) - ) + (vector-! v1-12 (-> self control transv) (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-1)) (let* ((f1-2 (vector-length v1-12)) (f2-0 f1-2) ) @@ -2595,8 +2540,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-1)) - (the-as vector (vector-float*! v1-12 v1-12 (/ f1-2 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-1) + (vector-float*! v1-12 v1-12 (/ f1-2 f2-0)) ) ) ) @@ -2608,47 +2553,28 @@ (none) ) :trans (behavior () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (set! (-> self board halfpipe-time) (-> self clock frame-counter)) - (if (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) - (set! (-> self board halfpipe-gspot-time) (-> self clock frame-counter)) - ) - (when (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 1)) - (let ((v1-11 (-> self control transv))) - (let ((a0-8 (-> self control transv)) - (a1-2 (-> self control dynam gravity-normal)) - (f0-1 (* 122880.0 (-> self clock seconds-per-frame))) - ) - (.lvf vf2 (&-> a1-2 quad)) - (.lvf vf1 (&-> a0-8 quad)) - (let ((a0-9 f0-1)) - (.mov vf3 a0-9) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-11 quad) vf4) + (set! (-> self board halfpipe-time) (-> self clock frame-counter)) + (if (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) + (set! (-> self board halfpipe-gspot-time) (-> self clock frame-counter)) + ) + (if (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 1)) + (vector+float*! + (-> self control transv) + (-> self control transv) + (-> self control dynam gravity-normal) + (* 122880.0 (-> self clock seconds-per-frame)) ) ) - (when (jump-hit-ground-stuck?) - (vector-float*! (-> self control transv) (-> self control transv) 1.5) - (go target-board-turn-to (-> self control transv) (seconds 0.5)) - ) - (when (>= (- (-> self clock frame-counter) (-> self board halfpipe-gspot-time)) (seconds 0.5)) - (+! (-> self control transv x) (* 20480.0 (-> self control unknown-vector36 x))) - (+! (-> self control transv z) (* 20480.0 (-> self control unknown-vector36 z))) - (go target-board-stance) - ) - (none) + (when (jump-hit-ground-stuck?) + (vector-float*! (-> self control transv) (-> self control transv) 1.5) + (go target-board-turn-to (-> self control transv) (seconds 0.5)) ) + (when (>= (- (-> self clock frame-counter) (-> self board halfpipe-gspot-time)) (seconds 0.5)) + (+! (-> self control transv x) (* 20480.0 (-> self control unknown-vector36 x))) + (+! (-> self control transv z) (* 20480.0 (-> self control unknown-vector36 z))) + (go target-board-stance) + ) + (none) ) :code (behavior ((arg0 handle)) (ja-channel-push! 1 (seconds 0.05)) @@ -2723,11 +2649,7 @@ (let ((v1-10 (new-stack-vector0))) (let ((f0-2 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-10 - (-> self control transv) - (the-as vector (vector-float*! v1-10 (-> self control dynam gravity-normal) f0-2)) - ) + (vector-! v1-10 (-> self control transv) (vector-float*! v1-10 (-> self control dynam gravity-normal) f0-2)) ) (let* ((f0-3 (vector-length v1-10)) (f1-1 f0-3) @@ -2739,8 +2661,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2)) - (the-as vector (vector-float*! v1-10 v1-10 (/ f0-3 f1-1))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! v1-10 v1-10 (/ f0-3 f1-1)) ) ) ) @@ -2750,11 +2672,7 @@ (let ((v1-12 (new-stack-vector0))) (let ((f0-6 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-12 - (-> self control transv) - (the-as vector (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-6)) - ) + (vector-! v1-12 (-> self control transv) (vector-float*! v1-12 (-> self control dynam gravity-normal) f0-6)) ) (let* ((f0-7 (vector-length v1-12)) (f1-3 f0-7) @@ -2766,8 +2684,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-5)) - (the-as vector (vector-float*! v1-12 v1-12 (/ f0-7 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-5) + (vector-float*! v1-12 v1-12 (/ f0-7 f1-3)) ) ) ) @@ -2777,11 +2695,7 @@ (let ((v1-14 (new-stack-vector0))) (let ((f0-10 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-14 - (-> self control transv) - (the-as vector (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-10)) - ) + (vector-! v1-14 (-> self control transv) (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-10)) ) (let* ((f0-11 (vector-length v1-14)) (f1-5 f0-11) @@ -2789,8 +2703,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7)) - (the-as vector (vector-float*! v1-14 v1-14 (/ f0-11 f1-5))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-7) + (vector-float*! v1-14 v1-14 (/ f0-11 f1-5)) ) ) ) @@ -2802,11 +2716,7 @@ (f0-14 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-17 - (-> self control transv) - (the-as vector (vector-float*! v1-17 (-> self control dynam gravity-normal) f0-14)) - ) + (vector-! v1-17 (-> self control transv) (vector-float*! v1-17 (-> self control dynam gravity-normal) f0-14)) (let* ((f2-8 (vector-length v1-17)) (f1-8 f2-8) ) @@ -2815,8 +2725,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-14)) - (the-as vector (vector-float*! v1-17 v1-17 (/ f2-8 f1-8))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-14) + (vector-float*! v1-17 v1-17 (/ f2-8 f1-8)) ) ) ) @@ -3023,11 +2933,7 @@ (let ((v1-16 (new-stack-vector0))) (let ((f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-16 - (-> self control transv) - (the-as vector (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-3)) - ) + (vector-! v1-16 (-> self control transv) (vector-float*! v1-16 (-> self control dynam gravity-normal) f0-3)) ) (let* ((f0-4 (vector-length v1-16)) (f1-1 f0-4) @@ -3039,8 +2945,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2)) - (the-as vector (vector-float*! v1-16 v1-16 (/ f0-4 f1-1))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! v1-16 v1-16 (/ f0-4 f1-1)) ) ) ) @@ -3050,11 +2956,7 @@ (let ((v1-18 (new-stack-vector0))) (let ((f0-7 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-18 - (-> self control transv) - (the-as vector (vector-float*! v1-18 (-> self control dynam gravity-normal) f0-7)) - ) + (vector-! v1-18 (-> self control transv) (vector-float*! v1-18 (-> self control dynam gravity-normal) f0-7)) ) (let* ((f0-8 (vector-length v1-18)) (f1-3 f0-8) @@ -3062,8 +2964,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-4)) - (the-as vector (vector-float*! v1-18 v1-18 (/ f0-8 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-4) + (vector-float*! v1-18 v1-18 (/ f0-8 f1-3)) ) ) ) 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 1c7c02cae3..65d3bd424d 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 @@ -219,39 +219,19 @@ :tiltvvf 18.0 :mult-hook (lambda :behavior target ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (case arg3 - ((1) - (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (let* ((f30-0 (* 122880.0 (-> self control unknown-float10) (-> self clock seconds-per-frame))) - (a2-1 (-> self board ride-dir)) - (v1-12 (vector-flatten! (new 'stack-no-clear 'vector) (-> self control unknown-vector08) a2-1)) - (v0-3 (-> self control transv)) - ) - (let ((a0-6 (-> self control transv))) - (.lvf vf2 (&-> v1-12 quad)) - (.lvf vf1 (&-> a0-6 quad)) - ) - (let ((v1-13 f30-0)) - (.mov vf3 v1-13) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v0-3 quad) vf4) - ) + (case arg3 + ((1) + (when (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (let* ((f30-0 (* 122880.0 (-> self control unknown-float10) (-> self clock seconds-per-frame))) + (a2-1 (-> self board ride-dir)) + (v1-12 (vector-flatten! (new 'stack-no-clear 'vector) (-> self control unknown-vector08) a2-1)) + ) + (vector+float*! (-> self control transv) (-> self control transv) v1-12 f30-0) ) ) - ) - (none) + ) ) + (none) ) :mode 'air :flags (surface-flag no-turn-around turn-to-pad check-edge air) @@ -880,39 +860,21 @@ ;; definition for function segment-array-index->vector (defun segment-array-index->vector ((arg0 (inline-array vector)) (arg1 int) (arg2 float) (arg3 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((v0-0 (the int arg2))) - (let* ((f0-2 arg2) - (f0-4 (- f0-2 (the float (the int f0-2)))) - ) - (when (>= v0-0 arg1) - (set! v0-0 (+ arg1 -1)) - (set! f0-4 (- arg2 (the float v0-0))) - ) - (let ((v1-5 (-> arg0 v0-0)) - (a1-3 (-> arg0 (+ v0-0 1))) - (a1-4 arg3) - ) - (.lvf vf2 (&-> (vector-! (new 'stack-no-clear 'vector) a1-3 v1-5) quad)) - (.lvf vf1 (&-> v1-5 quad)) - (let ((v1-6 f0-4)) - (.mov vf3 v1-6) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> a1-4 quad) vf4) - ) + (let ((v0-0 (the int arg2))) + (let* ((f0-2 arg2) + (f0-4 (- f0-2 (the float (the int f0-2)))) + ) + (when (>= v0-0 arg1) + (set! v0-0 (+ arg1 -1)) + (set! f0-4 (- arg2 (the float v0-0))) + ) + (let ((v1-5 (-> arg0 v0-0)) + (a1-3 (-> arg0 (+ v0-0 1))) + ) + (vector+float*! arg3 v1-5 (vector-! (new 'stack-no-clear 'vector) a1-3 v1-5) f0-4) ) - v0-0 ) + v0-0 ) ) @@ -1223,164 +1185,151 @@ ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. (defbehavior target-board-collision target () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control transv quad)) - (when (logtest? (focus-status halfpipe) (-> self focus-status)) - (when (-> self control unknown-spool-anim00) - *edge-grab-info* - (let ((v1-9 (new-stack-vector0)) - (f0-1 (vector-dot (-> self control unknown-vector36) (-> self control transv))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control transv quad)) + (when (logtest? (focus-status halfpipe) (-> self focus-status)) + (when (-> self control unknown-spool-anim00) + *edge-grab-info* + (let ((v1-9 (new-stack-vector0)) + (f0-1 (vector-dot (-> self control unknown-vector36) (-> self control transv))) + ) + 0.0 + (vector-! v1-9 (-> self control transv) (vector-float*! v1-9 (-> self control unknown-vector36) f0-1)) + (let* ((f1-2 (vector-length v1-9)) + (f2-0 f1-2) + ) + (if (< 0.0 f0-1) + (set! f0-1 -2048.0) ) - 0.0 - (vector-! - v1-9 + (vector+! (-> self control transv) - (the-as vector (vector-float*! v1-9 (-> self control unknown-vector36) f0-1)) - ) - (let* ((f1-2 (vector-length v1-9)) - (f2-0 f1-2) - ) - (if (< 0.0 f0-1) - (set! f0-1 -2048.0) - ) - (vector+! - (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control unknown-vector36) f0-1)) - (the-as vector (vector-float*! v1-9 v1-9 (/ f1-2 f2-0))) - ) + (vector-float*! (-> self control transv) (-> self control unknown-vector36) f0-1) + (vector-float*! v1-9 v1-9 (/ f1-2 f2-0)) ) ) ) ) - (when *debug-segment* - (let ((s5-0 (-> *display* frames (-> *display* on-screen) profile-array data 0)) - (v1-17 'target) - (s4-0 *profile-target-color*) - ) - (when (and *dproc* *debug-segment*) - (let ((s3-0 (-> s5-0 data (-> s5-0 count)))) - (let ((s2-0 (-> s5-0 base-time))) - (set! (-> s3-0 name) v1-17) - (set! (-> s3-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s2-0)))) - ) - (set! (-> s3-0 depth) (the-as uint (-> s5-0 depth))) - (set! (-> s3-0 color) s4-0) - (set! (-> s5-0 segment (-> s5-0 depth)) s3-0) - ) - (+! (-> s5-0 count) 1) - (+! (-> s5-0 depth) 1) - (set! (-> s5-0 max-depth) (max (-> s5-0 max-depth) (-> s5-0 depth))) + ) + (when *debug-segment* + (let ((s5-0 (-> *display* frames (-> *display* on-screen) profile-array data 0)) + (v1-17 'target) + (s4-0 *profile-target-color*) ) + (when (and *dproc* *debug-segment*) + (let ((s3-0 (-> s5-0 data (-> s5-0 count)))) + (let ((s2-0 (-> s5-0 base-time))) + (set! (-> s3-0 name) v1-17) + (set! (-> s3-0 start-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s2-0)))) + ) + (set! (-> s3-0 depth) (the-as uint (-> s5-0 depth))) + (set! (-> s3-0 color) s4-0) + (set! (-> s5-0 segment (-> s5-0 depth)) s3-0) + ) + (+! (-> s5-0 count) 1) + (+! (-> s5-0 depth) 1) + (set! (-> s5-0 max-depth) (max (-> s5-0 max-depth) (-> s5-0 depth))) ) - 0 ) - (let ((a2-6 (new 'stack-no-clear 'collide-query)) - (v1-30 (-> self control)) - ) - (set! (-> a2-6 collide-with) (-> v1-30 root-prim prim-core collide-with)) - (set! (-> a2-6 ignore-process0) self) - (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)) - ) - (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))) - (set! (-> *collide-edge-board-spec* touching-segment) #f) - (target-method-27 *target* *collide-cache* *collide-edge-board-spec*) - ) - (when *debug-segment* - (let ((s5-1 (-> *display* frames (-> *display* on-screen) profile-array data 0))) - (when (and *dproc* *debug-segment*) - (let* ((v1-53 (+ (-> s5-1 depth) -1)) - (s4-1 (-> s5-1 segment v1-53)) - (s3-1 (-> s5-1 base-time)) - ) - (when (>= v1-53 0) - (set! (-> s4-1 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-1)))) - (+! (-> s5-1 depth) -1) - ) + 0 + ) + (let ((a2-6 (new 'stack-no-clear 'collide-query)) + (v1-30 (-> self control)) + ) + (set! (-> a2-6 collide-with) (-> v1-30 root-prim prim-core collide-with)) + (set! (-> a2-6 ignore-process0) self) + (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)) + ) + (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))) + (set! (-> *collide-edge-board-spec* touching-segment) #f) + (target-method-27 *target* *collide-cache* *collide-edge-board-spec*) + ) + (when *debug-segment* + (let ((s5-1 (-> *display* frames (-> *display* on-screen) profile-array data 0))) + (when (and *dproc* *debug-segment*) + (let* ((v1-53 (+ (-> s5-1 depth) -1)) + (s4-1 (-> s5-1 segment v1-53)) + (s3-1 (-> s5-1 base-time)) + ) + (when (>= v1-53 0) + (set! (-> s4-1 end-time) (the-as int (- (timer-count (the-as timer-bank #x10000800)) (the-as uint s3-1)))) + (+! (-> s5-1 depth) -1) ) ) ) - 0 ) - (target-board-physics gp-0) - (deg-diff (vector-y-angle gp-0) (vector-y-angle (-> self control transv))) - (let* ((v1-60 gp-0) - (f30-0 (sqrtf (+ (* (-> v1-60 x) (-> v1-60 x)) (* (-> v1-60 z) (-> v1-60 z))))) - ) - (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))) - (!= (-> self control ground-pat mode) 3) - (>= (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) - ) - ) - (let ((s5-3 (new 'stack-no-clear 'vector))) - (set! (-> s5-3 quad) (-> self control unknown-vector25 quad)) - (vector-normalize! s5-3 1.0) - (let ((s3-2 (vector-reflect! (new 'stack-no-clear 'vector) gp-0 s5-3)) - (s4-3 (new 'stack-no-clear 'vector)) - ) - (set! (-> s4-3 quad) (-> self control unknown-matrix01 vector 2 quad)) - (set! (-> s3-2 y) 0.0) - (vector-normalize! s3-2 1.0) - (set! (-> s4-3 y) 0.0) - (vector-normalize! s4-3 1.0) - (let ((f0-11 (y-angle (-> self control)))) - (deg-diff f0-11 (vector-y-angle s3-2)) - ) - (let ((s2-2 - (vector-matrix*! (new 'stack-no-clear 'vector) (-> self control transv) (-> self control unknown-matrix00)) + 0 + ) + (target-board-physics gp-0) + (deg-diff (vector-y-angle gp-0) (vector-y-angle (-> self control transv))) + (let* ((v1-60 gp-0) + (f30-0 (sqrtf (+ (* (-> v1-60 x) (-> v1-60 x)) (* (-> v1-60 z) (-> v1-60 z))))) + ) + (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))) + (!= (-> self control ground-pat mode) 3) + (>= (- (-> self clock frame-counter) (-> self board halfpipe-time)) (seconds 0.1)) ) - (s3-3 (vector-matrix*! (new 'stack-no-clear 'vector) s3-2 (-> self control unknown-matrix00))) + ) + (let ((s5-3 (new 'stack-no-clear 'vector))) + (set! (-> s5-3 quad) (-> self control unknown-vector25 quad)) + (vector-normalize! s5-3 1.0) + (let ((s3-2 (vector-reflect! (new 'stack-no-clear 'vector) gp-0 s5-3)) + (s4-3 (new 'stack-no-clear 'vector)) + ) + (set! (-> s4-3 quad) (-> self control unknown-matrix01 vector 2 quad)) + (set! (-> s3-2 y) 0.0) + (vector-normalize! s3-2 1.0) + (set! (-> s4-3 y) 0.0) + (vector-normalize! s4-3 1.0) + (let ((f0-11 (y-angle (-> self control)))) + (deg-diff f0-11 (vector-y-angle s3-2)) + ) + (let ((s2-2 + (vector-matrix*! (new 'stack-no-clear 'vector) (-> self control transv) (-> self control unknown-matrix00)) ) - (logior! (-> self control status) (cshape-moving-flags csmf15)) - (set! (-> self board glance-time) (-> self clock frame-counter)) - (let ((v1-99 s2-2)) - (set! (-> self board glance-speed) (sqrtf (+ (* (-> v1-99 x) (-> v1-99 x)) (* (-> v1-99 z) (-> v1-99 z))))) + (s3-3 (vector-matrix*! (new 'stack-no-clear 'vector) s3-2 (-> self control unknown-matrix00))) ) - (set! (-> self board glance-normal quad) (-> s5-3 quad)) - (set! (-> self board glance-in-transv quad) (-> gp-0 quad)) - (set! (-> s3-3 y) (-> s2-2 y)) - (vector-xz-normalize! s3-3 (-> self board glance-speed)) - (vector-matrix*! (-> self control transv) s3-3 (-> self control unknown-matrix01)) + (logior! (-> self control status) (cshape-moving-flags csmf15)) + (set! (-> self board glance-time) (-> self clock frame-counter)) + (let ((v1-99 s2-2)) + (set! (-> self board glance-speed) (sqrtf (+ (* (-> v1-99 x) (-> v1-99 x)) (* (-> v1-99 z) (-> v1-99 z))))) ) - (set! (-> self board glance-out-transv quad) (-> self control transv quad)) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) - (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) - ) - (when (and (< (vector-dot s4-3 s5-3) -0.77) (zero? (logand (-> self focus-status) (focus-status dead hit)))) - (cond - ((not (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) - (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) - ) - ) - (if (< 32768.0 f30-0) - (sound-play "board-glance") - ) - (go target-board-turn-to (-> self control transv) (seconds 0.2)) - ) - (else - (set! (-> self control unknown-time-frame00) - (the-as - time-frame - (max (+ (-> self clock frame-counter) (seconds 0.1)) (-> self control unknown-time-frame00)) - ) + (set! (-> self board glance-normal quad) (-> s5-3 quad)) + (set! (-> self board glance-in-transv quad) (-> gp-0 quad)) + (set! (-> s3-3 y) (-> s2-2 y)) + (vector-xz-normalize! s3-3 (-> self board glance-speed)) + (vector-matrix*! (-> self control transv) s3-3 (-> self control unknown-matrix01)) + ) + (set! (-> self board glance-out-transv quad) (-> self control transv quad)) + (forward-up-nopitch->quaternion + (-> self control dir-targ) + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) + (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + ) + (when (and (< (vector-dot s4-3 s5-3) -0.77) (zero? (logand (-> self focus-status) (focus-status dead hit)))) + (cond + ((not (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) + (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) + ) + ) + (if (< 32768.0 f30-0) + (sound-play "board-glance") + ) + (go target-board-turn-to (-> self control transv) (seconds 0.2)) + ) + (else + (set! (-> self control unknown-time-frame00) + (the-as + time-frame + (max (+ (-> self clock frame-counter) (seconds 0.1)) (-> self control unknown-time-frame00)) ) - ) + ) ) ) ) @@ -1388,70 +1337,45 @@ ) ) ) - (let ((gp-3 (new 'stack-no-clear 'collide-query))) - (let ((v1-138 gp-3)) - (set! (-> v1-138 radius) 1638.4) - (set! (-> v1-138 collide-with) - (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) - ) - (set! (-> v1-138 ignore-process0) self) - (set! (-> v1-138 ignore-process1) #f) - (set! (-> v1-138 ignore-pat) (-> self control pat-ignore-mask)) - (set! (-> v1-138 action-mask) (collide-action solid)) - ) - (let ((v1-139 (-> gp-3 start-pos))) - (let ((a0-87 (-> self control trans)) - (a1-30 (-> self control unknown-matrix01 vector 2)) - (f0-24 10240.0) - ) - (.lvf vf2 (&-> a1-30 quad)) - (.lvf vf1 (&-> a0-87 quad)) - (let ((a0-88 f0-24)) - (.mov vf3 a0-88) + ) + (let ((gp-3 (new 'stack-no-clear 'collide-query))) + (let ((v1-138 gp-3)) + (set! (-> v1-138 radius) 1638.4) + (set! (-> v1-138 collide-with) + (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-139 quad) vf4) - ) - (let ((v1-140 (-> gp-3 start-pos))) - (let ((a0-89 (-> gp-3 start-pos)) - (a1-33 (-> self control dynam gravity-normal)) - (f0-25 8192.0) - ) - (.lvf vf2 (&-> a1-33 quad)) - (.lvf vf1 (&-> a0-89 quad)) - (let ((a0-90 f0-25)) - (.mov vf3 a0-90) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-140 quad) vf4) - ) - (vector-float*! (-> gp-3 move-dist) (-> self control dynam gravity-normal) -49152.0) - (cond - ((>= (fill-and-probe-using-line-sphere *collide-cache* gp-3) 0.0) - (set! (-> self board unknown-vector00 quad) (-> gp-3 best-other-tri intersect quad)) - (set! (-> self board unknown-vector01 quad) (-> gp-3 best-other-tri normal quad)) - (set! (-> self board unknown-int00) (the-as uint (-> gp-3 best-other-tri pat))) - (set! (-> self board unknown-symbol00) #t) - ) - (else - (set! (-> self board unknown-symbol00) #f) - ) + (set! (-> v1-138 ignore-process0) self) + (set! (-> v1-138 ignore-process1) #f) + (set! (-> v1-138 ignore-pat) (-> self control pat-ignore-mask)) + (set! (-> v1-138 action-mask) (collide-action solid)) + ) + (vector+float*! + (-> gp-3 start-pos) + (-> self control trans) + (-> self control unknown-matrix01 vector 2) + 10240.0 + ) + (vector+float*! (-> gp-3 start-pos) (-> gp-3 start-pos) (-> self control dynam gravity-normal) 8192.0) + (vector-float*! (-> gp-3 move-dist) (-> self control dynam gravity-normal) -49152.0) + (cond + ((>= (fill-and-probe-using-line-sphere *collide-cache* gp-3) 0.0) + (set! (-> self board unknown-vector00 quad) (-> gp-3 best-other-tri intersect quad)) + (set! (-> self board unknown-vector01 quad) (-> gp-3 best-other-tri normal quad)) + (set! (-> self board unknown-int00) (the-as uint (-> gp-3 best-other-tri pat))) + (set! (-> self board unknown-symbol00) #t) + ) + (else + (set! (-> self board unknown-symbol00) #f) ) ) - (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) - (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - (set! (-> self control unknown-time-frame14) (-> self clock frame-counter)) - ) - 0 - (none) ) + (if (and (< (target-move-dist (-> *TARGET-bank* stuck-time)) (-> *TARGET-bank* stuck-distance)) + (not (and *cheat-mode* (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) + ) + (set! (-> self control unknown-time-frame14) (-> self clock frame-counter)) + ) + 0 + (none) ) ;; definition for function target-board-joint-points @@ -1475,251 +1399,232 @@ ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. (defbehavior target-board-pre-move target () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (cond - ((and (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) - (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) - ) - (begin - (set! (-> self board in-air-time) (-> self clock frame-counter)) - (and (not (and (-> self next-state) - (let ((v1-12 (-> self next-state name))) - (or (= v1-12 'target-board-stance) (= v1-12 'target-board-duck-stance) (= v1-12 'target-board-turn-to)) - ) - ) - ) - (and (or (and (or (< 20480.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control gspot-pos)) - ) - ) - (< 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - (< (-> self control unknown-float22) 0.0) - ) - (or (not (or (= (-> self control unknown-pat-surface01 mode) (pat-mode ground)) - (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) - ) - ) - (or (= (-> self control unknown-pat-surface01 event) (pat-event rail)) - (and (logtest? (-> self water flags) (water-flags active)) - (< (-> self control gspot-pos y) (-> self water surface-height)) - ) - (and (and (-> self next-state) (let ((v1-53 (-> self next-state name))) - (or (= v1-53 'target-board-hold) (= v1-53 'target-board-trickx)) - ) - ) - (zero? (logand (focus-status halfpipe) (-> self focus-status))) - ) - (and (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) - (and (< (fabs (vector-dot (-> self control gspot-normal) (-> self control dynam gravity-normal))) 0.7) - (zero? (logand (focus-status halfpipe) (-> self focus-status))) - ) - ) - ) - ) - ) - (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.2)) - ) - ) - ) - ) - (set! (-> self control unknown-float30) 0.0) - (set! (-> self control unknown-float29) 0.0) - ) - (else - (set! (-> self control unknown-float30) 1024.0) - (set! (-> self control unknown-float29) 1.0) - (when (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) - (-> self control gspot-normal) - ) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (-> self control dir-targ) - 0.1 - ) - ) - ) - ) - (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) circle square) (not (-> self board ride-lock))) - (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) - ) + (cond + ((and (and (logtest? (-> self control unknown-surface00 flags) (surface-flag air)) + (zero? (logand (-> self control status) (cshape-moving-flags on-surface))) ) - (set! (-> self board ride-lock) #f) - ) - (cond - ((and (-> self next-state) (let ((v1-121 (-> self next-state name))) - (or (= v1-121 'target-board-get-on) (= v1-121 'target-board-get-off)) + (begin + (set! (-> self board in-air-time) (-> self clock frame-counter)) + (and (not (and (-> self next-state) + (let ((v1-12 (-> self next-state name))) + (or (= v1-12 'target-board-stance) (= v1-12 'target-board-duck-stance) (= v1-12 'target-board-turn-to)) + ) + ) + ) + (and (or (and (or (< 20480.0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control gspot-pos)) + ) + ) + (< 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) - ) - ) - ((and (-> self next-state) (let ((v1-126 (-> self next-state name))) - (or (= v1-126 'target-board-trickx) (= v1-126 'target-board-hold)) + (< (-> self control unknown-float22) 0.0) + ) + (or (not (or (= (-> self control unknown-pat-surface01 mode) (pat-mode ground)) + (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) + ) ) + (or (= (-> self control unknown-pat-surface01 event) (pat-event rail)) + (and (logtest? (-> self water flags) (water-flags active)) + (< (-> self control gspot-pos y) (-> self water surface-height)) + ) + (and (and (-> self next-state) (let ((v1-53 (-> self next-state name))) + (or (= v1-53 'target-board-hold) (= v1-53 'target-board-trickx)) + ) + ) + (zero? (logand (focus-status halfpipe) (-> self focus-status))) + ) + (and (= (-> self control unknown-pat-surface01 mode) (pat-mode halfpipe)) + (and (< (fabs (vector-dot (-> self control gspot-normal) (-> self control dynam gravity-normal))) 0.7) + (zero? (logand (focus-status halfpipe) (-> self focus-status))) + ) + ) + ) + ) + ) + (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.2)) + ) + ) ) - (seek! (-> self control dynam gravity-length) 245760.0 (* 30.0 (-> self clock seconds-per-frame))) - ) - ((= (-> self control unknown-surface00 name) 'spin) - (set! (-> self control dynam gravity-length) - (lerp-scale 245760.0 204800.0 (fabs (-> self board trotyv)) 0.0 145635.56) - ) - ) - ((and (-> self next-state) (= (-> self next-state name) 'target-board-halfpipe)) - (if (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (set! (-> self control dynam gravity-length) 245760.0) - (set! (-> self control dynam gravity-length) 163840.0) - ) - ) - ((and (-> self next-state) - (let ((v1-159 (-> self next-state name))) - (or (= v1-159 'target-board-stance) (= v1-159 'target-board-duck-stance) (= v1-159 'target-board-turn-to)) - ) - ) - (cond - (#f - (set! (-> self control dynam gravity-length) 245760.0) - ) - ((>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) (seconds 0.1)) - (seek! (-> self control dynam gravity-length) 245760.0 (* 245760.0 (-> self clock seconds-per-frame))) ) - (else - (set! (-> self control dynam gravity-length) 81920.0) + (set! (-> self control unknown-float30) 0.0) + (set! (-> self control unknown-float29) 0.0) + ) + (else + (set! (-> self control unknown-float30) 1024.0) + (set! (-> self control unknown-float29) 1.0) + (when (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) + (forward-up-nopitch->quaternion + (-> self control dir-targ) + (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + (-> self control gspot-normal) + ) + (quaternion-slerp! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (-> self control dir-targ) + 0.1 + ) + ) + ) + ) + (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) circle square) (not (-> self board ride-lock))) + (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) + ) + ) + (set! (-> self board ride-lock) #f) + ) + (cond + ((and (-> self next-state) (let ((v1-121 (-> self next-state name))) + (or (= v1-121 'target-board-get-on) (= v1-121 'target-board-get-off)) + ) + ) + ) + ((and (-> self next-state) (let ((v1-126 (-> self next-state name))) + (or (= v1-126 'target-board-trickx) (= v1-126 'target-board-hold)) + ) + ) + (seek! (-> self control dynam gravity-length) 245760.0 (* 30.0 (-> self clock seconds-per-frame))) + ) + ((= (-> self control unknown-surface00 name) 'spin) + (set! (-> self control dynam gravity-length) + (lerp-scale 245760.0 204800.0 (fabs (-> self board trotyv)) 0.0 145635.56) ) + ) + ((and (-> self next-state) (= (-> self next-state name) 'target-board-halfpipe)) + (if (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (set! (-> self control dynam gravity-length) 245760.0) + (set! (-> self control dynam gravity-length) 163840.0) + ) + ) + ((and (-> self next-state) + (let ((v1-159 (-> self next-state name))) + (or (= v1-159 'target-board-stance) (= v1-159 'target-board-duck-stance) (= v1-159 'target-board-turn-to)) + ) + ) + (cond + (#f + (set! (-> self control dynam gravity-length) 245760.0) + ) + ((>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06)) (seconds 0.1)) + (seek! (-> self control dynam gravity-length) 245760.0 (* 245760.0 (-> self clock seconds-per-frame))) + ) + (else + (set! (-> self control dynam gravity-length) 81920.0) ) ) - (else - (set! (-> self control dynam gravity-length) 245760.0) - ) + ) + (else + (set! (-> self control dynam gravity-length) 245760.0) ) - (vector-float*! - (-> self control dynam gravity) - (-> self control dynam gravity-normal) - (the-as float (-> self control dynam gravity-length)) - ) - (if (< (-> self control unknown-float15) 0.0) - (set! (-> self control unknown-float15) (- 1.0 (-> self control unknown-cpad-info00 stick0-speed))) - ) - (when (and (-> self board unknown-symbol00) (zero? (logand (focus-status halfpipe) (-> self focus-status)))) - (let ((f30-0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control trans)) - ) - ) - (f26-0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control gspot-pos)) - ) - ) - (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - (let ((f0-36 - (* (-> self control unknown-float17) - (vector-length - (vector-flatten! - (new 'stack-no-clear 'vector) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self board unknown-vector00)) - (-> self control unknown-dynamics00 gravity-normal) - ) - ) - ) - ) - ) - (when (and (zero? (shr (shl (-> self board unknown-int00) 54) 61)) - (!= (shr (shl (-> self board unknown-int00) 40) 58) 13) - (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.2)) - (< 819.2 (- f30-0 f0-36)) - (or (< (-> self board unknown-time-frame01) (-> self control unknown-time-frame06)) - (< (- (-> self clock frame-counter) (-> self board unknown-time-frame01)) (seconds 0.2)) - ) - (< 0.98 (vector-dot (-> self board unknown-vector01) (-> self control unknown-dynamics00 gravity-normal))) - (< f26-0 8192.0) - (< f30-0 8192.0) - (or (< (* 0.2 f28-0) f30-0) - (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) - ) - ) - (let ((v1-259 (-> self control transv))) - (let ((a0-74 (-> self control transv)) - (a1-28 (-> self control dynam gravity-normal)) - (f0-44 (* 7.0 (fmin 4096.0 f30-0))) - ) - (.lvf vf2 (&-> a1-28 quad)) - (.lvf vf1 (&-> a0-74 quad)) - (let ((a0-75 f0-44)) - (.mov vf3 a0-75) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-259 quad) vf4) - ) - (if (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) - (set! (-> self board unknown-time-frame01) (-> self clock frame-counter)) - ) - (set! (-> self board unknown-time-frame00) (-> self clock frame-counter)) - ) - ) - (when (and (zero? (logand (-> 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)) - ) - (< 8192.0 (- f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self board slow-transv)))) - ) - (< (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.1)) - ) - (>= 204.8 f30-0) - (not (and (-> self next-state) (= (-> self next-state name) 'target-board-jump))) - ) - (set! (-> self board unknown-time-frame02) (-> self clock frame-counter)) - (vector-length (-> self control transv)) - (let ((v1-302 (new-stack-vector0)) - (f0-51 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - 0.0 - (vector-! - v1-302 - (-> self control transv) - (the-as vector (vector-float*! v1-302 (-> self control dynam gravity-normal) f0-51)) - ) - (let* ((f1-24 (vector-length v1-302)) - (f2-0 f1-24) - (f0-52 (* 0.9 f0-51)) - ) - (vector+! - (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-52)) - (the-as vector (vector-float*! v1-302 v1-302 (/ f1-24 f2-0))) - ) - ) - ) - (set! (-> self board slow-transv quad) (-> self control transv quad)) - (set! (-> self board turn-anim-duck-vel) 0.0) - ) - ) - ) - 0 - (none) ) + (vector-float*! + (-> self control dynam gravity) + (-> self control dynam gravity-normal) + (the-as float (-> self control dynam gravity-length)) + ) + (if (< (-> self control unknown-float15) 0.0) + (set! (-> self control unknown-float15) (- 1.0 (-> self control unknown-cpad-info00 stick0-speed))) + ) + (when (and (-> self board unknown-symbol00) (zero? (logand (focus-status halfpipe) (-> self focus-status)))) + (let ((f30-0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control trans)) + ) + ) + (f26-0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self board unknown-vector00) (-> self control gspot-pos)) + ) + ) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + (let ((f0-36 + (* (-> self control unknown-float17) + (vector-length + (vector-flatten! + (new 'stack-no-clear 'vector) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self board unknown-vector00)) + (-> self control unknown-dynamics00 gravity-normal) + ) + ) + ) + ) + ) + (when (and (zero? (shr (shl (-> self board unknown-int00) 54) 61)) + (!= (shr (shl (-> self board unknown-int00) 40) 58) 13) + (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.2)) + (< 819.2 (- f30-0 f0-36)) + (or (< (-> self board unknown-time-frame01) (-> self control unknown-time-frame06)) + (< (- (-> self clock frame-counter) (-> self board unknown-time-frame01)) (seconds 0.2)) + ) + (< 0.98 (vector-dot (-> self board unknown-vector01) (-> self control unknown-dynamics00 gravity-normal))) + (< f26-0 8192.0) + (< f30-0 8192.0) + (or (< (* 0.2 f28-0) f30-0) + (< (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) + ) + ) + (vector+float*! + (-> self control transv) + (-> self control transv) + (-> self control dynam gravity-normal) + (* 7.0 (fmin 4096.0 f30-0)) + ) + (if (>= (- (-> self clock frame-counter) (-> self board unknown-time-frame00)) (seconds 0.1)) + (set! (-> self board unknown-time-frame01) (-> self clock frame-counter)) + ) + (set! (-> self board unknown-time-frame00) (-> self clock frame-counter)) + ) + ) + (when (and (zero? (logand (-> 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)) + ) + (< 8192.0 (- f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self board slow-transv)))) + ) + (< (- (-> self clock frame-counter) (-> self board unknown-time-frame02)) (seconds 0.1)) + ) + (>= 204.8 f30-0) + (not (and (-> self next-state) (= (-> self next-state name) 'target-board-jump))) + ) + (set! (-> self board unknown-time-frame02) (-> self clock frame-counter)) + (vector-length (-> self control transv)) + (let ((v1-303 (new-stack-vector0)) + (f0-51 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! + v1-303 + (-> self control transv) + (vector-float*! v1-303 (-> self control dynam gravity-normal) f0-51) + ) + (let* ((f1-24 (vector-length v1-303)) + (f2-0 f1-24) + (f0-52 (* 0.9 f0-51)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-52) + (vector-float*! v1-303 v1-303 (/ f1-24 f2-0)) + ) + ) + ) + (set! (-> self board slow-transv quad) (-> self control transv quad)) + (set! (-> self board turn-anim-duck-vel) 0.0) + ) + ) + ) + 0 + (none) ) ;; definition for function target-board-real-post @@ -2015,413 +1920,374 @@ ;; INFO: Used lq/sq (defbehavior target-board-compute-edge target () (local-vars (sv-768 int)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 *edge-grab-info*) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> gp-0 quad) (-> self control trans quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self control transv quad)) - (when (not (edge-grab-info-method-9 s4-0)) - (format #t "exit update~%") - (send-event self 'end-mode #f) - (return (the-as time-frame #f)) - ) - (vector-normalize-copy! (-> self board ride-dir) (-> self board ride-segment) 1.0) - (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) - (set! (-> self board ride-lock-on) #f) - (set! (-> self board ride-start-time) (-> self clock frame-counter)) - (vector-normalize-copy! (-> self board ride-dir) (-> self control transv) 1.0) - (dotimes (v1-25 3) - (vector-reset! (-> self board ride-vertex-old v1-25)) - ) - ) - (set! (-> self board ride-rot-abs 1) (-> self board ride-rot-abs 0)) - (let* ((f30-0 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0))) - (f30-1 (* f30-0 (lerp-scale 10.0 100.0 (fabs f30-0) 1820.4445 3640.889))) - ) - (+! (-> self board ride-rtv-abs) (* f30-1 (-> self clock seconds-per-frame))) - (set! (-> self board ride-rtv-abs) (* 0.9 (-> self board ride-rtv-abs))) - (+! (-> self board ride-rot-abs 0) (* (-> self board ride-rtv-abs) (-> self clock seconds-per-frame))) - (when (>= 0.0 (* f30-1 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0)))) - (set! (-> self board ride-rtv-abs) 0.0) - (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-dir))) - ) - ) - (set! (-> self control ground-pat) (the-as pat-surface (-> s4-0 edge-tri-pat))) - (vector-normalize! - (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) - 1.0 - ) - (set! (-> self control unknown-vector36 quad) (-> s4-0 hanging-matrix vector 0 quad)) - (when (< (vector-dot (-> self control unknown-vector34) (-> self board ride-dir)) 0.0) - (let ((s3-2 (new 'stack-no-clear 'vector))) - (set! (-> s3-2 quad) (-> s4-0 world-vertex 0 quad)) - (set! (-> s4-0 world-vertex 0 quad) (-> s4-0 world-vertex 1 quad)) - (set! (-> s4-0 world-vertex 1 quad) (-> s3-2 quad)) - (vector-normalize! - (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) - 1.0 - ) - (set! (-> s3-2 quad) (-> s4-0 adjacent-edge-left-vertex quad)) - (set! (-> s4-0 adjacent-edge-left-vertex quad) (-> s4-0 adjacent-edge-right-vertex quad)) - (set! (-> s4-0 adjacent-edge-right-vertex quad) (-> s3-2 quad)) - ) - (let ((v1-69 (logtest? (-> s4-0 status) 2))) - (if (logtest? (-> s4-0 status) 1) - (logior! (-> s4-0 status) 2) - (set! (-> s4-0 status) (logand -3 (-> s4-0 status))) - ) - (if v1-69 - (logior! (-> s4-0 status) 1) - (set! (-> s4-0 status) (logand -2 (-> s4-0 status))) - ) - ) - ) - (dotimes (v1-74 3) - (set! (-> self board ride-vertex-old v1-74 quad) (-> self board ride-vertex v1-74 quad)) - ) - (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) - (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) - (set! (-> self board ride-vertex-length-old) (-> self board ride-vertex-length)) - (set! (-> self board ride-vertex 0 quad) (-> s4-0 world-vertex 0 quad)) - (set! (-> self board ride-vertex 1 quad) (-> s4-0 world-vertex 1 quad)) - (set! (-> self board ride-vertex 2 quad) (the-as uint128 0)) - (set! (-> self board ride-vertex-length) 1) - (cond - ((logtest? (-> s4-0 status) 2) - (vector-normalize! - (vector-! (-> self control unknown-vector35) (-> s4-0 adjacent-edge-right-vertex) (-> s4-0 world-vertex 1)) - 1.0 - ) - (set! (-> self board ride-vertex 2 quad) (-> s4-0 adjacent-edge-right-vertex quad)) - (+! (-> self board ride-vertex-length) 1) - 0 - ) - (else - (set! (-> self control unknown-vector35 quad) (the-as uint128 0)) - ) - ) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (let ((s3-3 0)) - (label cfg-26) - (set! (-> self board ride-vertex-index) - (segment-array-vector->index - (-> self board ride-vertex) - (-> self board ride-vertex-length) - (the-as float (-> self control trans)) - 0.0 - ) - ) - (when (and (< (-> self board ride-vertex-index) 0.0) - (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) - (zero? s3-3) - ) - (+! s3-3 1) - (dotimes (v1-113 3) - (set! (-> self board ride-vertex v1-113 quad) (-> self board ride-vertex-old v1-113 quad)) - ) - (set! (-> self board ride-vertex-length) (-> self board ride-vertex-length-old)) - (goto cfg-26) - ) - ) - (set! (-> self board ride-vertex-index) (fmax 0.0 (-> self board ride-vertex-index))) - (set! (-> self board ride-vertex-base) - (segment-array-index->vector - (-> self board ride-vertex) - (-> self board ride-vertex-length) - (-> self board ride-vertex-index) - s4-1 - ) - ) - (vector-! - (-> self board ride-segment) - (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1)) - (-> self board ride-vertex (-> self board ride-vertex-base)) - ) - (dotimes (v1-127 3) - (set! (-> self board ride-vertex v1-127 w) 1.0) - ) - (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) - (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) - (set! (-> self board ride-rtv-abs) 0.0) - ) - (let ((f0-25 (vector-vector-distance (-> self control trans) s4-1))) - (when #t - (let ((s3-5 (vector-! (new 'stack-no-clear 'vector) s4-1 (-> self control trans)))) - (let ((f1-9 (* 12288.0 (-> self clock seconds-per-frame)))) - (if (and (not (-> self board ride-lock-on)) (< f1-9 f0-25)) - (vector-normalize! s3-5 f1-9) - (set! (-> self board ride-lock-on) #t) - ) - ) - (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)) - ) - ) - ) - ) - ) - (let ((f30-2 (-> self board ride-speed))) - (vector-normalize-copy! (-> self control unknown-vector08) (-> self board ride-segment) 1.0) - (vector-normalize-copy! (-> self control transv) (-> self board ride-segment) f30-2) - (vector-rotate-y! - (-> self board ride-dir-lean) - (-> self control unknown-vector08) - (* -4551.1113 (-> self board ride-lean)) - ) - (when (< (-> self board ride-vertex-base) (+ (-> self board ride-vertex-length) -1)) - (let ((a0-100 (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1))) - (s4-2 0) - ) - (let ((s3-7 (vector-! (new 'stack-no-clear 'vector) (&+ a0-100 16) a0-100))) - (if (< 14563.556 (fabs (deg-diff (vector-y-angle s3-7) (vector-y-angle (-> self control unknown-vector08))))) - (set! s4-2 (logior s4-2 2)) - ) - (if (< (vector-length s3-7) (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment))))) - (set! s4-2 (logior s4-2 32)) - ) - ) - (if (nonzero? s4-2) - (+! (-> self board ride-vertex-length) -1) - ) - ) - ) - (let ((s4-3 0)) - (if (and (< (fabs f30-2) 16384.0) - (< (- (-> self clock frame-counter) (-> self board ride-start-time)) (seconds 0.1)) - ) - (set! s4-3 (logior s4-3 1)) - ) - (if (or (< (vector-dot - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) - (-> self control unknown-vector08) - ) - 0.02 - ) - (let ((f28-2 (deg-diff (-> self board ride-rot-abs 0) (-> self board ride-rot-abs 1))) - (f26-0 (* 1820.4445 (-> self board ride-lean))) - ) - (when (and (< 0.0 (* f26-0 f28-2)) (!= (-> self board ride-rtv-abs) 0.0)) - (set! (-> self board ride-rtv-abs) 0.0) - (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) - ) - (and (-> self board ride-lock-on) - (or (and (or (< (* f26-0 f28-2) 0.0) (= f26-0 0.0)) - (< 91.022224 (fabs f28-2)) - (and (< 163.84 (fabs (deg-diff f26-0 f28-2))) (format #t "angle ~R ~R~%" f28-2 f26-0)) - ) - (< (lerp-scale 910.2222 2002.4889 (fabs f30-2) 8192.0 24576.0) (fabs f26-0)) - ) - ) - ) - ) - (set! s4-3 (logior s4-3 2)) - ) - (let* ((v1-227 (min (the int (-> self board ride-vertex-index)) (+ (-> self board ride-vertex-length) -1))) - (f28-3 - (vector-length - (vector-! - (new 'stack-no-clear 'vector) - (-> self board ride-vertex (+ v1-227 1)) - (-> self board ride-vertex v1-227) - ) - ) - ) - (s3-8 (new 'stack-no-clear 'collide-query)) - (f26-1 81920.0) - ) - (set! sv-768 8) - (let ((v1-234 s3-8)) - (set! (-> v1-234 radius) 1228.8) - (set! (-> v1-234 collide-with) - (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) - ) - (set! (-> v1-234 ignore-process0) self) - (set! (-> v1-234 ignore-process1) #f) - (set! (-> v1-234 ignore-pat) (-> self control pat-ignore-mask)) - (set! (-> v1-234 action-mask) (collide-action solid)) - ) - (let ((v1-235 (-> s3-8 start-pos))) - (let ((a0-127 (-> self control trans)) - (a1-55 (-> self board ride-dir)) - (f0-51 3276.8) - ) - (.lvf vf2 (&-> a1-55 quad)) - (.lvf vf1 (&-> a0-127 quad)) - (let ((a0-128 f0-51)) - (.mov vf3 a0-128) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-235 quad) vf4) - ) - (let ((v1-236 (-> s3-8 start-pos))) - (let ((a0-129 (-> s3-8 start-pos)) - (a1-58 (-> self control dynam gravity-normal)) - (f0-52 5324.8) - ) - (.lvf vf2 (&-> a1-58 quad)) - (.lvf vf1 (&-> a0-129 quad)) - (let ((a0-130 f0-52)) - (.mov vf3 a0-130) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-236 quad) vf4) - ) - (vector-float*! (-> s3-8 move-dist) (-> self control dynam gravity-normal) -49152.0) - (when (>= (fill-and-probe-using-line-sphere *collide-cache* s3-8) 0.0) - (set! f26-1 (- (-> self control trans y) (-> s3-8 best-other-tri intersect y))) - (set! sv-768 (the-as int (-> s3-8 best-other-tri pat))) - ) - (when (and (< (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) - (+ (-> self board ride-vertex-index) - (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) f28-3) - ) - ) - (>= f28-3 3686.4) - (and (or (>= f26-1 6963.2) (and (>= f26-1 2048.0) (zero? (shr (shl sv-768 54) 61)))) - (logtest? (shr (shl sv-768 57) 57) 8) - ) - ) - (format - #t - "end with length ~M sp:~M ang:~M b:~X ~f/~f~%" - f28-3 - (-> self board ride-speed) - f26-1 - sv-768 - (+ (-> self board ride-vertex-index) - (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) - (vector-length (-> self board ride-segment)) - ) - ) - (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) - ) - (set! s4-3 (logior s4-3 4)) - ) - ) - (let ((s3-9 (-> self board ride-vertex (-> self board ride-vertex-base)))) - (if (not (or (vector= s3-9 (the-as vector (-> self board ride-vertex-old))) - (vector= s3-9 (-> self board ride-vertex-old 1)) - (vector= s3-9 (-> self board ride-vertex-old 2)) - (vector= (&+ s3-9 16) (the-as vector (-> self board ride-vertex-old))) - (vector= (&+ s3-9 16) (-> self board ride-vertex-old 1)) - (vector= (&+ s3-9 16) (-> self board ride-vertex-old 2)) - ) - ) - (set! s4-3 (logior s4-3 8)) - ) - ) - (if (>= (- (-> self clock frame-counter) (-> self board ride-button-time)) (seconds 0.05)) - (set! s4-3 (logior s4-3 16)) - ) - (if (< (vector-length (-> self board ride-segment)) - (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment-old)))) - ) - (set! s4-3 (logior s4-3 32)) - ) - (if (logtest? (cshape-moving-flags csmf16) (-> self control status)) - (set! s4-3 (logior s4-3 64)) - ) - (logclear! (-> self control status) (cshape-moving-flags csmf16)) - (when (and (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) (nonzero? s4-3)) - (if (logtest? s4-3 1) - (format #t "exit speed ~M~%" f30-2) - ) - (if (logtest? s4-3 2) - (format - #t - "exit angle ~F~%" - (vector-dot - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) - (-> self control unknown-vector08) - ) - ) - ) - (if (logtest? s4-3 4) - (format - #t - "exit end ~F/~F~%" - (-> self board ride-vertex-index) - (the float (-> self board ride-vertex-length)) - ) - ) - (if (logtest? s4-3 8) - (format #t "exit match~%") - ) - (if (logtest? s4-3 16) - (format #t "exit button~%") - ) - (if (logtest? s4-3 32) - (format #t "exit length~%") - ) - (when (logtest? s4-3 64) - (set! (-> self board ride-lock-on) #f) - (format #t "exit probe~%") - ) - (if (logtest? s4-3 128) - (format #t "exit probe2~%") - ) - (cond - ((or (logtest? s4-3 1) (and (logtest? s4-3 2) (< (fabs f30-2) 32768.0))) - (let ((gp-1 (-> self control unknown-vector36))) - (let* ((a0-171 (vector-rotate-y! (new 'stack-no-clear 'vector) (-> self board ride-dir) -16384.0)) - (f28-4 (* (-> self board ride-lean) (vector-dot a0-171 gp-1))) - ) - (format #t "throw side ~f ~A speed ~m~%" f28-4 (>= f28-4 0.0) f30-2) - (vector-normalize-copy! - (-> self control transv) - gp-1 - (* (lerp-scale 8192.0 32768.0 (fabs (-> self board ride-lean)) 0.0 1.0) (if (>= f28-4 0.0) - 1.0 - -1.0 - ) - ) - ) - ) - (set! (-> self control unknown-vector08 quad) (-> gp-1 quad)) - ) - ) - ((logtest? s4-3 42) - (collide-shape-method-29 (-> self control) gp-0) - (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)) - ) - (send-event self 'end-mode (zero? (logand s4-3 75))) - ) - ) - (vector-rotate-y! - (-> self control unknown-vector08) - (-> self control unknown-vector08) - (+ (-> self board ride-rot) (* -2730.6667 (-> self board ride-lean))) - ) - (set! (-> self board ride-time) (-> self clock frame-counter)) - (set! (-> self board ride-speed) f30-2) + (let ((s4-0 *edge-grab-info*) + (gp-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> gp-0 quad) (-> self control trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self control transv quad)) + (when (not (edge-grab-info-method-9 s4-0)) + (format #t "exit update~%") + (send-event self 'end-mode #f) + (return (the-as time-frame #f)) + ) + (vector-normalize-copy! (-> self board ride-dir) (-> self board ride-segment) 1.0) + (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) + (set! (-> self board ride-lock-on) #f) + (set! (-> self board ride-start-time) (-> self clock frame-counter)) + (vector-normalize-copy! (-> self board ride-dir) (-> self control transv) 1.0) + (dotimes (v1-25 3) + (vector-reset! (-> self board ride-vertex-old v1-25)) ) ) + (set! (-> self board ride-rot-abs 1) (-> self board ride-rot-abs 0)) + (let* ((f30-0 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0))) + (f30-1 (* f30-0 (lerp-scale 10.0 100.0 (fabs f30-0) 1820.4445 3640.889))) + ) + (+! (-> self board ride-rtv-abs) (* f30-1 (-> self clock seconds-per-frame))) + (set! (-> self board ride-rtv-abs) (* 0.9 (-> self board ride-rtv-abs))) + (+! (-> self board ride-rot-abs 0) (* (-> self board ride-rtv-abs) (-> self clock seconds-per-frame))) + (when (>= 0.0 (* f30-1 (deg- (vector-y-angle (-> self board ride-dir)) (-> self board ride-rot-abs 0)))) + (set! (-> self board ride-rtv-abs) 0.0) + (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-dir))) + ) + ) + (set! (-> self control ground-pat) (the-as pat-surface (-> s4-0 edge-tri-pat))) + (vector-normalize! + (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) + 1.0 + ) + (set! (-> self control unknown-vector36 quad) (-> s4-0 hanging-matrix vector 0 quad)) + (when (< (vector-dot (-> self control unknown-vector34) (-> self board ride-dir)) 0.0) + (let ((s3-2 (new 'stack-no-clear 'vector))) + (set! (-> s3-2 quad) (-> s4-0 world-vertex 0 quad)) + (set! (-> s4-0 world-vertex 0 quad) (-> s4-0 world-vertex 1 quad)) + (set! (-> s4-0 world-vertex 1 quad) (-> s3-2 quad)) + (vector-normalize! + (vector-! (-> self control unknown-vector34) (-> s4-0 world-vertex 1) (the-as vector (-> s4-0 world-vertex))) + 1.0 + ) + (set! (-> s3-2 quad) (-> s4-0 adjacent-edge-left-vertex quad)) + (set! (-> s4-0 adjacent-edge-left-vertex quad) (-> s4-0 adjacent-edge-right-vertex quad)) + (set! (-> s4-0 adjacent-edge-right-vertex quad) (-> s3-2 quad)) + ) + (let ((v1-69 (logtest? (-> s4-0 status) 2))) + (if (logtest? (-> s4-0 status) 1) + (logior! (-> s4-0 status) 2) + (set! (-> s4-0 status) (logand -3 (-> s4-0 status))) + ) + (if v1-69 + (logior! (-> s4-0 status) 1) + (set! (-> s4-0 status) (logand -2 (-> s4-0 status))) + ) + ) + ) + (dotimes (v1-74 3) + (set! (-> self board ride-vertex-old v1-74 quad) (-> self board ride-vertex v1-74 quad)) + ) + (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) + (set! (-> self board ride-segment-old quad) (-> self board ride-segment quad)) + (set! (-> self board ride-vertex-length-old) (-> self board ride-vertex-length)) + (set! (-> self board ride-vertex 0 quad) (-> s4-0 world-vertex 0 quad)) + (set! (-> self board ride-vertex 1 quad) (-> s4-0 world-vertex 1 quad)) + (set! (-> self board ride-vertex 2 quad) (the-as uint128 0)) + (set! (-> self board ride-vertex-length) 1) + (cond + ((logtest? (-> s4-0 status) 2) + (vector-normalize! + (vector-! (-> self control unknown-vector35) (-> s4-0 adjacent-edge-right-vertex) (-> s4-0 world-vertex 1)) + 1.0 + ) + (set! (-> self board ride-vertex 2 quad) (-> s4-0 adjacent-edge-right-vertex quad)) + (+! (-> self board ride-vertex-length) 1) + 0 + ) + (else + (set! (-> self control unknown-vector35 quad) (the-as uint128 0)) + ) + ) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (let ((s3-3 0)) + (label cfg-26) + (set! (-> self board ride-vertex-index) + (segment-array-vector->index + (-> self board ride-vertex) + (-> self board ride-vertex-length) + (the-as float (-> self control trans)) + 0.0 + ) + ) + (when (and (< (-> self board ride-vertex-index) 0.0) + (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) + (zero? s3-3) + ) + (+! s3-3 1) + (dotimes (v1-113 3) + (set! (-> self board ride-vertex v1-113 quad) (-> self board ride-vertex-old v1-113 quad)) + ) + (set! (-> self board ride-vertex-length) (-> self board ride-vertex-length-old)) + (goto cfg-26) + ) + ) + (set! (-> self board ride-vertex-index) (fmax 0.0 (-> self board ride-vertex-index))) + (set! (-> self board ride-vertex-base) + (segment-array-index->vector + (-> self board ride-vertex) + (-> self board ride-vertex-length) + (-> self board ride-vertex-index) + s4-1 + ) + ) + (vector-! + (-> self board ride-segment) + (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1)) + (-> self board ride-vertex (-> self board ride-vertex-base)) + ) + (dotimes (v1-127 3) + (set! (-> self board ride-vertex v1-127 w) 1.0) + ) + (when (>= (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) + (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) + (set! (-> self board ride-rtv-abs) 0.0) + ) + (let ((f0-25 (vector-vector-distance (-> self control trans) s4-1))) + (when #t + (let ((s3-5 (vector-! (new 'stack-no-clear 'vector) s4-1 (-> self control trans)))) + (let ((f1-9 (* 12288.0 (-> self clock seconds-per-frame)))) + (if (and (not (-> self board ride-lock-on)) (< f1-9 f0-25)) + (vector-normalize! s3-5 f1-9) + (set! (-> self board ride-lock-on) #t) + ) + ) + (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)) + ) + ) + ) + ) + ) + (let ((f30-2 (-> self board ride-speed))) + (vector-normalize-copy! (-> self control unknown-vector08) (-> self board ride-segment) 1.0) + (vector-normalize-copy! (-> self control transv) (-> self board ride-segment) f30-2) + (vector-rotate-y! + (-> self board ride-dir-lean) + (-> self control unknown-vector08) + (* -4551.1113 (-> self board ride-lean)) + ) + (when (< (-> self board ride-vertex-base) (+ (-> self board ride-vertex-length) -1)) + (let ((a0-100 (-> self board ride-vertex (+ (-> self board ride-vertex-base) 1))) + (s4-2 0) + ) + (let ((s3-7 (vector-! (new 'stack-no-clear 'vector) (&+ a0-100 16) a0-100))) + (if (< 14563.556 (fabs (deg-diff (vector-y-angle s3-7) (vector-y-angle (-> self control unknown-vector08))))) + (set! s4-2 (logior s4-2 2)) + ) + (if (< (vector-length s3-7) (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment))))) + (set! s4-2 (logior s4-2 32)) + ) + ) + (if (nonzero? s4-2) + (+! (-> self board ride-vertex-length) -1) + ) + ) + ) + (let ((s4-3 0)) + (if (and (< (fabs f30-2) 16384.0) + (< (- (-> self clock frame-counter) (-> self board ride-start-time)) (seconds 0.1)) + ) + (set! s4-3 (logior s4-3 1)) + ) + (if (or (< (vector-dot + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) + (-> self control unknown-vector08) + ) + 0.02 + ) + (let ((f28-2 (deg-diff (-> self board ride-rot-abs 0) (-> self board ride-rot-abs 1))) + (f26-0 (* 1820.4445 (-> self board ride-lean))) + ) + (when (and (< 0.0 (* f26-0 f28-2)) (!= (-> self board ride-rtv-abs) 0.0)) + (set! (-> self board ride-rtv-abs) 0.0) + (set! (-> self board ride-rot-abs 0) (vector-y-angle (-> self board ride-segment))) + ) + (and (-> self board ride-lock-on) + (or (and (or (< (* f26-0 f28-2) 0.0) (= f26-0 0.0)) + (< 91.022224 (fabs f28-2)) + (and (< 163.84 (fabs (deg-diff f26-0 f28-2))) (format #t "angle ~R ~R~%" f28-2 f26-0)) + ) + (< (lerp-scale 910.2222 2002.4889 (fabs f30-2) 8192.0 24576.0) (fabs f26-0)) + ) + ) + ) + ) + (set! s4-3 (logior s4-3 2)) + ) + (let* ((v1-227 (min (the int (-> self board ride-vertex-index)) (+ (-> self board ride-vertex-length) -1))) + (f28-3 + (vector-length + (vector-! + (new 'stack-no-clear 'vector) + (-> self board ride-vertex (+ v1-227 1)) + (-> self board ride-vertex v1-227) + ) + ) + ) + (s3-8 (new 'stack-no-clear 'collide-query)) + (f26-1 81920.0) + ) + (set! sv-768 8) + (let ((v1-234 s3-8)) + (set! (-> v1-234 radius) 1228.8) + (set! (-> v1-234 collide-with) + (logclear (-> self control root-prim prim-core collide-with) (collide-spec crate)) + ) + (set! (-> v1-234 ignore-process0) self) + (set! (-> v1-234 ignore-process1) #f) + (set! (-> v1-234 ignore-pat) (-> self control pat-ignore-mask)) + (set! (-> v1-234 action-mask) (collide-action solid)) + ) + (vector+float*! (-> s3-8 start-pos) (-> self control trans) (-> self board ride-dir) 3276.8) + (vector+float*! (-> s3-8 start-pos) (-> s3-8 start-pos) (-> self control dynam gravity-normal) 5324.8) + (vector-float*! (-> s3-8 move-dist) (-> self control dynam gravity-normal) -49152.0) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* s3-8) 0.0) + (set! f26-1 (- (-> self control trans y) (-> s3-8 best-other-tri intersect y))) + (set! sv-768 (the-as int (-> s3-8 best-other-tri pat))) + ) + (when (and (< (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) + (+ (-> self board ride-vertex-index) + (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) f28-3) + ) + ) + (>= f28-3 3686.4) + (and (or (>= f26-1 6963.2) (and (>= f26-1 2048.0) (zero? (shr (shl sv-768 54) 61)))) + (logtest? (shr (shl sv-768 57) 57) 8) + ) + ) + (format + #t + "end with length ~M sp:~M ang:~M b:~X ~f/~f~%" + f28-3 + (-> self board ride-speed) + f26-1 + sv-768 + (+ (-> self board ride-vertex-index) + (/ (* (-> self board ride-speed) (-> self clock seconds-per-frame)) + (vector-length (-> self board ride-segment)) + ) + ) + (+ (the float (-> self board ride-vertex-length)) (/ 0.0 f28-3)) + ) + (set! s4-3 (logior s4-3 4)) + ) + ) + (let ((s3-9 (-> self board ride-vertex (-> self board ride-vertex-base)))) + (if (not (or (vector= s3-9 (the-as vector (-> self board ride-vertex-old))) + (vector= s3-9 (-> self board ride-vertex-old 1)) + (vector= s3-9 (-> self board ride-vertex-old 2)) + (vector= (&+ s3-9 16) (the-as vector (-> self board ride-vertex-old))) + (vector= (&+ s3-9 16) (-> self board ride-vertex-old 1)) + (vector= (&+ s3-9 16) (-> self board ride-vertex-old 2)) + ) + ) + (set! s4-3 (logior s4-3 8)) + ) + ) + (if (>= (- (-> self clock frame-counter) (-> self board ride-button-time)) (seconds 0.05)) + (set! s4-3 (logior s4-3 16)) + ) + (if (< (vector-length (-> self board ride-segment)) + (fmin 1024.0 (* 0.25 (vector-length (-> self board ride-segment-old)))) + ) + (set! s4-3 (logior s4-3 32)) + ) + (if (logtest? (cshape-moving-flags csmf16) (-> self control status)) + (set! s4-3 (logior s4-3 64)) + ) + (logclear! (-> self control status) (cshape-moving-flags csmf16)) + (when (and (< (- (-> self clock frame-counter) (-> self board ride-time)) (seconds 0.2)) (nonzero? s4-3)) + (if (logtest? s4-3 1) + (format #t "exit speed ~M~%" f30-2) + ) + (if (logtest? s4-3 2) + (format + #t + "exit angle ~F~%" + (vector-dot + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self board ride-segment-old) 1.0) + (-> self control unknown-vector08) + ) + ) + ) + (if (logtest? s4-3 4) + (format + #t + "exit end ~F/~F~%" + (-> self board ride-vertex-index) + (the float (-> self board ride-vertex-length)) + ) + ) + (if (logtest? s4-3 8) + (format #t "exit match~%") + ) + (if (logtest? s4-3 16) + (format #t "exit button~%") + ) + (if (logtest? s4-3 32) + (format #t "exit length~%") + ) + (when (logtest? s4-3 64) + (set! (-> self board ride-lock-on) #f) + (format #t "exit probe~%") + ) + (if (logtest? s4-3 128) + (format #t "exit probe2~%") + ) + (cond + ((or (logtest? s4-3 1) (and (logtest? s4-3 2) (< (fabs f30-2) 32768.0))) + (let ((gp-1 (-> self control unknown-vector36))) + (let* ((a0-169 (vector-rotate-y! (new 'stack-no-clear 'vector) (-> self board ride-dir) -16384.0)) + (f28-4 (* (-> self board ride-lean) (vector-dot a0-169 gp-1))) + ) + (format #t "throw side ~f ~A speed ~m~%" f28-4 (>= f28-4 0.0) f30-2) + (vector-normalize-copy! + (-> self control transv) + gp-1 + (* (lerp-scale 8192.0 32768.0 (fabs (-> self board ride-lean)) 0.0 1.0) (if (>= f28-4 0.0) + 1.0 + -1.0 + ) + ) + ) + ) + (set! (-> self control unknown-vector08 quad) (-> gp-1 quad)) + ) + ) + ((logtest? s4-3 42) + (collide-shape-method-29 (-> self control) gp-0) + (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)) + ) + (send-event self 'end-mode (zero? (logand s4-3 75))) + ) + ) + (vector-rotate-y! + (-> self control unknown-vector08) + (-> self control unknown-vector08) + (+ (-> self board ride-rot) (* -2730.6667 (-> self board ride-lean))) + ) + (set! (-> self board ride-time) (-> self clock frame-counter)) + (set! (-> self board ride-speed) f30-2) + ) ) - (let ((v0-3 (-> self clock frame-counter))) - (set! (-> self control unknown-time-frame06) v0-3) - v0-3 - ) + ) + (let ((v0-3 (-> self clock frame-counter))) + (set! (-> self control unknown-time-frame06) v0-3) + v0-3 ) ) 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 83d7350cf9..fda4843d28 100644 --- a/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/logic-target_REF.gc @@ -448,7 +448,7 @@ (vector-! v1-180 (-> arg0 control transv) - (the-as vector (vector-float*! v1-180 (-> arg0 control dynam gravity-normal) f0-15)) + (vector-float*! v1-180 (-> arg0 control dynam gravity-normal) f0-15) ) ) (let ((f0-16 (vector-length v1-180))) @@ -858,90 +858,62 @@ ;; definition for function target-add-slide-factor ;; INFO: Used lq/sq (defbehavior target-add-slide-factor target ((arg0 vector)) - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) + (let* ((a1-2 (vector-flatten! + (new 'stack-no-clear 'vector) + (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) + (-> self control local-normal) + ) + ) + (s4-1 (vector-matrix*! (new 'stack-no-clear 'vector) a1-2 (-> self control unknown-matrix00))) + (s5-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) s4-1 1.0)) ) - (init-vf0-vector) - (let* ((a1-2 (vector-flatten! - (new 'stack-no-clear 'vector) - (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) - (-> self control local-normal) - ) + (vector+float*! arg0 arg0 s4-1 (-> self control unknown-surface01 slide-factor)) + (let ((a1-5 (-> self control unknown-vector26))) + (when (not (or (= (- 1.0 (-> self control unknown-surface01 slope-up-traction)) 0.0) (< (vector-length s4-1) 0.1))) + (let* ((a0-7 (vector-matrix*! (new 'stack-no-clear 'vector) a1-5 (-> self control unknown-matrix00))) + (v1-15 (new-stack-vector0)) + (f0-5 (vector-dot a0-7 arg0)) + ) + 0.0 + (vector-! v1-15 arg0 (vector-float*! v1-15 a0-7 f0-5)) + (let* ((f1-5 (vector-length v1-15)) + (f2-0 f1-5) ) - (s4-1 (vector-matrix*! (new 'stack-no-clear 'vector) a1-2 (-> self control unknown-matrix00))) - (s5-1 (vector-normalize-copy! (new 'stack-no-clear 'vector) s4-1 1.0)) - ) - (let ((v1-4 arg0)) - (let ((a0-5 arg0) - (a1-4 s4-1) - (f0-0 (-> self control unknown-surface01 slide-factor)) - ) - (.lvf vf2 (&-> a1-4 quad)) - (.lvf vf1 (&-> a0-5 quad)) - (let ((a0-6 f0-0)) - (.mov vf3 a0-6) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> v1-4 quad) vf4) - ) - (let ((a1-5 (-> self control unknown-vector26))) - (when (not (or (= (- 1.0 (-> self control unknown-surface01 slope-up-traction)) 0.0) (< (vector-length s4-1) 0.1))) - (let* ((a0-8 (vector-matrix*! (new 'stack-no-clear 'vector) a1-5 (-> self control unknown-matrix00))) - (v1-14 (new-stack-vector0)) - (f0-5 (vector-dot a0-8 arg0)) - ) - 0.0 - (vector-! v1-14 arg0 (the-as vector (vector-float*! v1-14 a0-8 f0-5))) - (let* ((f1-5 (vector-length v1-14)) - (f2-0 f1-5) - ) - (if (< f0-5 0.0) - (set! f0-5 (* f0-5 (-> self control unknown-surface01 slope-up-traction))) - ) - (let ((f0-6 (+ f0-5 (-> self control unknown-surface01 slope-down-factor)))) - (vector+! - arg0 - (the-as vector (vector-float*! arg0 a0-8 f0-6)) - (the-as vector (vector-float*! v1-14 v1-14 (/ f1-5 f2-0))) - ) + (if (< f0-5 0.0) + (set! f0-5 (* f0-5 (-> self control unknown-surface01 slope-up-traction))) ) + (let ((f0-6 (+ f0-5 (-> self control unknown-surface01 slope-down-factor)))) + (vector+! arg0 (vector-float*! arg0 a0-7 f0-6) (vector-float*! v1-15 v1-15 (/ f1-5 f2-0))) ) ) ) ) - (let ((t9-5 vector-xz-normalize!) - (a0-11 (new-stack-vector0)) - ) - (set! (-> a0-11 quad) (-> arg0 quad)) - (let ((v1-17 (t9-5 a0-11 1.0))) - (set! (-> v1-17 y) 0.0) - (let* ((f0-10 (vector-dot s5-1 v1-17)) - (v1-19 arg0) - (f1-10 (sqrtf (+ (* (-> v1-19 x) (-> v1-19 x)) (* (-> v1-19 z) (-> v1-19 z))))) - ) - (if (>= f0-10 0.0) - (vector-xz-normalize! - arg0 - (fmax 0.0 (+ f1-10 (* f0-10 (-> self control unknown-surface01 slope-down-factor)))) - ) - (vector-xz-normalize! - arg0 - (fmax 0.0 (- f1-10 (* (- f0-10) (-> self control unknown-surface01 slope-up-factor)))) - ) - ) - ) - ) - ) ) - arg0 + (let ((t9-5 vector-xz-normalize!) + (a0-10 (new-stack-vector0)) + ) + (set! (-> a0-10 quad) (-> arg0 quad)) + (let ((v1-18 (t9-5 a0-10 1.0))) + (set! (-> v1-18 y) 0.0) + (let* ((f0-10 (vector-dot s5-1 v1-18)) + (v1-20 arg0) + (f1-10 (sqrtf (+ (* (-> v1-20 x) (-> v1-20 x)) (* (-> v1-20 z) (-> v1-20 z))))) + ) + (if (>= f0-10 0.0) + (vector-xz-normalize! + arg0 + (fmax 0.0 (+ f1-10 (* f0-10 (-> self control unknown-surface01 slope-down-factor)))) + ) + (vector-xz-normalize! + arg0 + (fmax 0.0 (- f1-10 (* (- f0-10) (-> self control unknown-surface01 slope-up-factor)))) + ) + ) + ) + ) + ) ) + arg0 ) ;; definition for function add-thrust @@ -1130,7 +1102,7 @@ (f0-2 (vector-dot a0-4 (-> self control unknown-vector00))) ) 0.0 - (vector-! v1-9 (-> self control unknown-vector00) (the-as vector (vector-float*! v1-9 a0-4 f0-2))) + (vector-! v1-9 (-> self control unknown-vector00) (vector-float*! v1-9 a0-4 f0-2)) (let* ((f1-2 (vector-length v1-9)) (f2-0 f1-2) ) @@ -1142,8 +1114,8 @@ ) (vector+! (-> self control unknown-vector00) - (the-as vector (vector-float*! (-> self control unknown-vector00) a0-4 f0-2)) - (the-as vector (vector-float*! v1-9 v1-9 (/ f1-2 f2-0))) + (vector-float*! (-> self control unknown-vector00) a0-4 f0-2) + (vector-float*! v1-9 v1-9 (/ f1-2 f2-0)) ) ) ) @@ -1794,11 +1766,7 @@ (let ((v1-189 (new-stack-vector0))) (let ((f0-9 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-189 - (-> self control transv) - (the-as vector (vector-float*! v1-189 (-> self control dynam gravity-normal) f0-9)) - ) + (vector-! v1-189 (-> self control transv) (vector-float*! v1-189 (-> self control dynam gravity-normal) f0-9)) ) (let* ((f0-10 (vector-length v1-189)) (f1-5 f0-10) @@ -1806,8 +1774,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0)) - (the-as vector (vector-float*! v1-189 v1-189 (/ f0-10 f1-5))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-189 v1-189 (/ f0-10 f1-5)) ) ) ) @@ -1817,15 +1785,15 @@ (f0-13 (vector-dot (-> self control dynam gravity-normal) a1-36)) ) 0.0 - (vector-! v1-193 a1-36 (the-as vector (vector-float*! v1-193 (-> self control dynam gravity-normal) f0-13))) + (vector-! v1-193 a1-36 (vector-float*! v1-193 (-> self control dynam gravity-normal) f0-13)) (let* ((f1-8 (vector-length v1-193)) (f2-1 f1-8) (f0-14 (+ 512.0 f0-13)) ) (vector+! a1-36 - (the-as vector (vector-float*! a1-36 (-> self control dynam gravity-normal) f0-14)) - (the-as vector (vector-float*! v1-193 v1-193 (/ f1-8 f2-1))) + (vector-float*! a1-36 (-> self control dynam gravity-normal) f0-14) + (vector-float*! v1-193 v1-193 (/ f1-8 f2-1)) ) ) ) @@ -2328,130 +2296,105 @@ ;; definition for function target-compute-pole ;; INFO: Used lq/sq (defbehavior target-compute-pole target () - (rlet ((acc :class vf) - (vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf4 :class vf) + (let* ((s2-0 (handle->process (-> self control unknown-handle01))) + (gp-0 (-> (the-as swingpole s2-0) dir)) ) - (init-vf0-vector) - (let* ((s2-0 (handle->process (-> self control unknown-handle01))) - (gp-0 (-> (the-as swingpole s2-0) dir)) - ) - (set! (-> self control unknown-vector34 quad) (-> gp-0 quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let ((v1-7 (-> (the-as swingpole s2-0) root trans)) - (a0-5 gp-0) - (f0-0 (-> (the-as swingpole s2-0) edge-length)) - ) - (.lvf vf2 (&-> a0-5 quad)) - (.lvf vf1 (&-> v1-7 quad)) - (let ((v1-8 f0-0)) - (.mov vf3 v1-8) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s4-0 quad) vf4) - (let ((s3-0 (new 'stack-no-clear 'vector))) - (let ((v1-10 (-> (the-as swingpole s2-0) root trans)) - (a0-6 gp-0) - (f0-2 (- (-> (the-as swingpole s2-0) edge-length))) + (set! (-> self control unknown-vector34 quad) (-> gp-0 quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (let ((s4-1 (vector+float*! + (new 'stack-no-clear 'vector) + (-> (the-as swingpole s2-0) root trans) + gp-0 + (the-as float (-> (the-as swingpole s2-0) edge-length)) + ) + ) + (s3-1 (vector+float*! + (new 'stack-no-clear 'vector) + (-> (the-as swingpole s2-0) root trans) + gp-0 + (- (-> (the-as swingpole s2-0) edge-length)) + ) ) - (.lvf vf2 (&-> a0-6 quad)) - (.lvf vf1 (&-> v1-10 quad)) - (let ((v1-11 f0-2)) - (.mov vf3 v1-11) - ) - ) - (.add.x.vf vf4 vf0 vf0 :mask #b1000) - (.mul.x.vf acc vf2 vf3) - (.add.mul.w.vf vf4 vf1 vf0 acc :mask #b111) - (.svf (&-> s3-0 quad) vf4) - (let ((v1-12 (new 'stack-no-clear 'vector))) - (vector+! v1-12 s4-0 s3-0) - (vector-float*! v1-12 v1-12 0.5) - (set! (-> v1-12 y) (+ -6144.0 (-> v1-12 y))) - (send-event *camera* 'ease-in #x3f000000 v1-12) - ) - (vector-segment-distance-point! (-> self control unknown-vector30) s4-0 s3-0 s5-0) - (if (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) - (set! (-> self control unknown-float33) - (fmax 0.0 (fmin 1.0 (/ (vector-vector-distance s4-0 s5-0) (* 2.0 (-> (the-as swingpole s2-0) edge-length))))) - ) - (vector-lerp! s5-0 s4-0 s3-0 (-> self control unknown-float33)) - ) - (when *display-edge-collision-marks* - (add-debug-vector - #t - (bucket-id debug-no-zbuf1) - (-> (the-as swingpole s2-0) root trans) - (the-as vector (&-> s2-0 stack 96)) - (meters 3.0) - (the-as rgba (-> (new 'static 'array uint64 1 #x80ff00ff) 0)) - ) - (add-debug-sphere - #t - (bucket-id debug2) - (-> self control unknown-vector30) - (meters 0.2) - (the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0)) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf1) - s4-0 - (meters 0.2) - (the-as rgba (-> (new 'static 'array uint64 1 #x8000ff00) 0)) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf1) - s3-0 - (meters 0.2) - (the-as rgba (-> (new 'static 'array uint64 1 #x8040ff00) 0)) - ) - (add-debug-sphere #t (bucket-id debug-no-zbuf1) s5-0 (meters 0.2) (new 'static 'rgba :b #xff :a #x80)) - ) ) + (let ((v1-10 (new 'stack-no-clear 'vector))) + (vector+! v1-10 s4-1 s3-1) + (vector-float*! v1-10 v1-10 0.5) + (set! (-> v1-10 y) (+ -6144.0 (-> v1-10 y))) + (send-event *camera* 'ease-in #x3f000000 v1-10) ) - (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-1 (method-of-object (-> self control) collide-shape-method-28))) - (vector-normalize! a0-26 2457.6) - (s4-1) - ) - ) - (else - (set! (-> self control unknown-symbol02) (the-as float #t)) - (collide-shape-method-29 - (-> self control) - (vector-! (new 'stack-no-clear 'vector) s5-0 (-> self control unknown-vector31)) - ) - (set! (-> self control unknown-vector21 quad) (-> self control trans quad)) - ) + (vector-segment-distance-point! (-> self control unknown-vector30) s4-1 s3-1 s5-0) + (if (< (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.05)) + (set! (-> self control unknown-float33) + (fmax 0.0 (fmin 1.0 (/ (vector-vector-distance s4-1 s5-0) (* 2.0 (-> (the-as swingpole s2-0) edge-length))))) + ) + (vector-lerp! s5-0 s4-1 s3-1 (-> self control unknown-float33)) ) + (when *display-edge-collision-marks* + (add-debug-vector + #t + (bucket-id debug-no-zbuf1) + (-> (the-as swingpole s2-0) root trans) + (-> (the-as swingpole s2-0) dir) + (meters 3.0) + (the-as rgba (-> (new 'static 'array uint64 1 #x80ff00ff) 0)) + ) + (add-debug-sphere + #t + (bucket-id debug2) + (-> self control unknown-vector30) + (meters 0.2) + (the-as rgba (-> (new 'static 'array uint64 1 #x800000ff) 0)) + ) + (add-debug-sphere + #t + (bucket-id debug-no-zbuf1) + s4-1 + (meters 0.2) + (the-as rgba (-> (new 'static 'array uint64 1 #x8000ff00) 0)) + ) + (add-debug-sphere + #t + (bucket-id debug-no-zbuf1) + s3-1 + (meters 0.2) + (the-as rgba (-> (new 'static 'array uint64 1 #x8040ff00) 0)) + ) + (add-debug-sphere #t (bucket-id debug-no-zbuf1) s5-0 (meters 0.2) (new 'static 'rgba :b #xff :a #x80)) ) ) - (let ((s5-3 (vector-cross! (-> self control unknown-vector36) gp-0 (-> self control dynam gravity-normal)))) - (if (>= 0.0 - (vector-dot s5-3 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) - ) - (vector-negate! s5-3 s5-3) + (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) + ) + ) + (else + (set! (-> self control unknown-symbol02) (the-as float #t)) + (collide-shape-method-29 + (-> self control) + (vector-! (new 'stack-no-clear 'vector) s5-0 (-> self control unknown-vector31)) + ) + (set! (-> self control unknown-vector21 quad) (-> self control trans quad)) ) - (forward-up-nopitch->quaternion (-> self control dir-targ) s5-3 (-> self control dynam gravity-normal)) + ) ) ) - (set-quaternion! (-> self control) (-> self control dir-targ)) - (joint-control-method-10 (-> self skel)) - (draw-control-method-14 (-> self draw) (-> self node-list) (-> self skel)) - (collide-shape-method-46 (-> self control)) - (none) + (let ((s5-3 (vector-cross! (-> self control unknown-vector36) gp-0 (-> self control dynam gravity-normal)))) + (if (>= 0.0 + (vector-dot s5-3 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) + ) + (vector-negate! s5-3 s5-3) + ) + (forward-up-nopitch->quaternion (-> self control dir-targ) s5-3 (-> self control dynam gravity-normal)) + ) ) + (set-quaternion! (-> self control) (-> self control dir-targ)) + (joint-control-method-10 (-> self skel)) + (draw-control-method-14 (-> self draw) (-> self node-list) (-> self skel)) + (collide-shape-method-46 (-> self control)) + (none) ) ;; definition for function target-calc-camera-pos @@ -2722,7 +2665,7 @@ ) ) ) - (vector-lerp! s5-0 (the-as vector a1-3) (the-as vector a2-2) f0-12) + (vector-lerp! s5-0 a1-3 a2-2 f0-12) ) ) (set! f28-0 (vector-length s5-0)) diff --git a/test/decompiler/reference/jak2/engine/target/target_REF.gc b/test/decompiler/reference/jak2/engine/target/target_REF.gc index a89baa0dc9..181b3683b5 100644 --- a/test/decompiler/reference/jak2/engine/target/target_REF.gc +++ b/test/decompiler/reference/jak2/engine/target/target_REF.gc @@ -627,7 +627,7 @@ (let ((v1-55 (new-stack-vector0))) (let ((f0-19 (vector-dot (-> self control dynam gravity-normal) arg4))) 0.0 - (vector-! v1-55 arg4 (the-as vector (vector-float*! v1-55 (-> self control dynam gravity-normal) f0-19))) + (vector-! v1-55 arg4 (vector-float*! v1-55 (-> self control dynam gravity-normal) f0-19)) ) (let* ((f0-20 (vector-length v1-55)) (f1-16 f0-20) @@ -639,8 +639,8 @@ ) (vector+! arg4 - (the-as vector (vector-float*! arg4 (-> self control dynam gravity-normal) f2-13)) - (the-as vector (vector-float*! v1-55 v1-55 (/ f0-20 f1-16))) + (vector-float*! arg4 (-> self control dynam gravity-normal) f2-13) + (vector-float*! v1-55 v1-55 (/ f0-20 f1-16)) ) ) ) @@ -670,7 +670,7 @@ ) (let ((f1-5 (vector-dot (-> self control dynam gravity-normal) arg3))) 0.0 - (vector-! s4-0 arg3 (the-as vector (vector-float*! s4-0 (-> self control dynam gravity-normal) f1-5))) + (vector-! s4-0 arg3 (vector-float*! s4-0 (-> self control dynam gravity-normal) f1-5)) ) (let* ((f30-0 (vector-length s4-0)) (f28-0 f30-0) @@ -689,8 +689,8 @@ ) (vector+! arg3 - (the-as vector (vector-float*! arg3 (-> self control dynam gravity-normal) f0-7)) - (the-as vector (vector-float*! s4-0 s4-0 (/ f30-0 f28-0))) + (vector-float*! arg3 (-> self control dynam gravity-normal) f0-7) + (vector-float*! s4-0 s4-0 (/ f30-0 f28-0)) ) ) ) @@ -2547,19 +2547,15 @@ (f0-3 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-11 - (-> self control transv) - (the-as vector (vector-float*! v1-11 (-> self control dynam gravity-normal) f0-3)) - ) + (vector-! v1-11 (-> self control transv) (vector-float*! v1-11 (-> self control dynam gravity-normal) f0-3)) (let* ((f1-3 (vector-length v1-11)) (f2-0 f1-3) (f0-4 (fmin 0.0 f0-3)) ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-4)) - (the-as vector (vector-float*! v1-11 v1-11 (/ f1-3 f2-0))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-4) + (vector-float*! v1-11 v1-11 (/ f1-3 f2-0)) ) ) ) @@ -2978,11 +2974,7 @@ (let ((v1-14 (new-stack-vector0))) (let ((f0-4 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-14 - (-> self control transv) - (the-as vector (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-4)) - ) + (vector-! v1-14 (-> self control transv) (vector-float*! v1-14 (-> self control dynam gravity-normal) f0-4)) ) (let* ((f0-5 (vector-length v1-14)) (f1-2 f0-5) @@ -2990,8 +2982,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0)) - (the-as vector (vector-float*! v1-14 v1-14 (/ f0-5 f1-2))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-14 v1-14 (/ f0-5 f1-2)) ) ) ) @@ -3023,11 +3015,7 @@ (let ((v1-33 (new-stack-vector0))) (let ((f1-11 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-33 - (-> self control transv) - (the-as vector (vector-float*! v1-33 (-> self control dynam gravity-normal) f1-11)) - ) + (vector-! v1-33 (-> self control transv) (vector-float*! v1-33 (-> self control dynam gravity-normal) f1-11)) ) (let* ((f1-12 (vector-length v1-33)) (f2-7 f1-12) @@ -3035,8 +3023,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-12)) - (the-as vector (vector-float*! v1-33 v1-33 (/ f1-12 f2-7))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-12) + (vector-float*! v1-33 v1-33 (/ f1-12 f2-7)) ) ) ) @@ -3295,11 +3283,7 @@ (let ((v1-7 (new-stack-vector0))) (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-7 - (-> self control transv) - (the-as vector (vector-float*! v1-7 (-> self control dynam gravity-normal) f0-1)) - ) + (vector-! v1-7 (-> self control transv) (vector-float*! v1-7 (-> self control dynam gravity-normal) f0-1)) ) (let* ((f0-2 (vector-length v1-7)) (f1-1 f0-2) @@ -3311,8 +3295,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3)) - (the-as vector (vector-float*! v1-7 v1-7 (/ f0-2 f1-1))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3) + (vector-float*! v1-7 v1-7 (/ f0-2 f1-1)) ) ) ) @@ -3537,11 +3521,7 @@ (let ((v1-33 (new-stack-vector0))) (let ((f0-7 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-33 - (-> self control transv) - (the-as vector (vector-float*! v1-33 (-> self control dynam gravity-normal) f0-7)) - ) + (vector-! v1-33 (-> self control transv) (vector-float*! v1-33 (-> self control dynam gravity-normal) f0-7)) ) (let* ((f0-8 (vector-length v1-33)) (f1-3 f0-8) @@ -3549,8 +3529,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0)) - (the-as vector (vector-float*! v1-33 v1-33 (/ f0-8 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-33 v1-33 (/ f0-8 f1-3)) ) ) ) @@ -3703,7 +3683,7 @@ (vector-! v1-58 (-> self control unknown-vector44) - (the-as vector (vector-float*! v1-58 (-> self control dynam gravity-normal) f0-17)) + (vector-float*! v1-58 (-> self control dynam gravity-normal) f0-17) ) ) (let* ((f0-18 (vector-length v1-58)) @@ -3712,22 +3692,15 @@ ) (vector+! (-> self control unknown-vector44) - (the-as - vector - (vector-float*! (-> self control unknown-vector44) (-> self control dynam gravity-normal) f2-0) - ) - (the-as vector (vector-float*! v1-58 v1-58 (/ f0-18 f1-1))) + (vector-float*! (-> self control unknown-vector44) (-> self control dynam gravity-normal) f2-0) + (vector-float*! v1-58 v1-58 (/ f0-18 f1-1)) ) ) ) (let ((v1-59 (new-stack-vector0))) (let ((f0-21 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! - v1-59 - (-> self control transv) - (the-as vector (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-21)) - ) + (vector-! v1-59 (-> self control transv) (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-21)) ) (let* ((f0-22 (vector-length v1-59)) (f1-3 f0-22) @@ -3735,8 +3708,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2)) - (the-as vector (vector-float*! v1-59 v1-59 (/ f0-22 f1-3))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! v1-59 v1-59 (/ f0-22 f1-3)) ) ) ) @@ -3757,11 +3730,7 @@ (f0-33 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-77 - (-> self control transv) - (the-as vector (vector-float*! v1-77 (-> self control dynam gravity-normal) f0-33)) - ) + (vector-! v1-77 (-> self control transv) (vector-float*! v1-77 (-> self control dynam gravity-normal) f0-33)) (let* ((f2-3 (vector-length v1-77)) (f1-7 f2-3) ) @@ -3770,8 +3739,8 @@ ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-33)) - (the-as vector (vector-float*! v1-77 v1-77 (/ f2-3 f1-7))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-33) + (vector-float*! v1-77 v1-77 (/ f2-3 f1-7)) ) ) ) @@ -4204,19 +4173,15 @@ (f0-19 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) ) 0.0 - (vector-! - v1-59 - (-> self control transv) - (the-as vector (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-19)) - ) + (vector-! v1-59 (-> self control transv) (vector-float*! v1-59 (-> self control dynam gravity-normal) f0-19)) (let* ((f2-0 (vector-length v1-59)) (f1-7 f2-0) (f2-1 (* 0.9 f2-0)) ) (vector+! (-> self control transv) - (the-as vector (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-19)) - (the-as vector (vector-float*! v1-59 v1-59 (/ f2-1 f1-7))) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-19) + (vector-float*! v1-59 v1-59 (/ f2-1 f1-7)) ) ) )