From a6d5c4eda3298df470bb749cc28a8abc99c2f2a7 Mon Sep 17 00:00:00 2001 From: water111 <48171810+water111@users.noreply.github.com> Date: Sun, 27 Jun 2021 17:24:35 -0400 Subject: [PATCH] [decompiler] clean up vector detection and add vector float product detection (#638) * change * recognize vector float product and update tests --- decompiler/IR2/AtomicOp.cpp | 22 ++ decompiler/IR2/AtomicOp.h | 9 +- decompiler/IR2/AtomicOpTypeAnalysis.cpp | 5 + decompiler/IR2/Form.cpp | 6 + decompiler/IR2/Form.h | 11 + decompiler/IR2/FormExpressionAnalysis.cpp | 285 +++----------- decompiler/IR2/IR2_common.h | 3 + decompiler/analysis/atomic_op_builder.cpp | 189 ++++++++- decompiler/analysis/insert_lets.cpp | 22 ++ goal_src/engine/camera/cam-interface.gc | 26 +- goal_src/engine/camera/camera-h.gc | 96 ++--- goal_src/engine/gfx/wind.gc | 86 ++--- goal_src/engine/math/vector.gc | 43 +-- goal_src/engine/util/sync-info.gc | 98 ++--- .../engine/ambient/mood-tables_REF.gc | 9 +- .../reference/engine/anim/bones-h_REF.gc | 3 +- .../reference/engine/anim/joint-h_REF.gc | 3 +- .../reference/engine/anim/mspace-h_REF.gc | 3 +- .../engine/camera/cam-debug-h_REF.gc | 21 +- .../engine/camera/cam-interface-h_REF.gc | 7 +- .../engine/camera/cam-interface_REF.gc | 29 +- .../engine/camera/cam-update-h_REF.gc | 6 +- .../reference/engine/camera/camera-h_REF.gc | 109 ++---- .../engine/camera/math-camera-h_REF.gc | 3 +- .../engine/camera/math-camera_REF.gc | 31 +- .../engine/camera/pov-camera-h_REF.gc | 3 +- .../engine/collide/collide-frag-h_REF.gc | 3 +- .../engine/collide/collide-frag_REF.gc | 22 +- .../engine/collide/collide-touch-h_REF.gc | 6 +- .../reference/engine/data/art-h_REF.gc | 3 +- .../reference/engine/data/res-h_REF.gc | 3 +- .../reference/engine/debug/assert-h_REF.gc | 3 +- .../reference/engine/debug/debug-h_REF.gc | 3 +- .../engine/debug/debug-sphere_REF.gc | 6 +- .../reference/engine/debug/stats-h_REF.gc | 3 +- .../reference/engine/dma/dma-bucket_REF.gc | 3 +- .../reference/engine/dma/dma-buffer_REF.gc | 6 +- .../reference/engine/dma/dma-disasm_REF.gc | 364 ++++++++---------- .../reference/engine/dma/dma_REF.gc | 45 +-- .../reference/engine/draw/draw-node-h_REF.gc | 3 +- .../engine/draw/drawable-ambient-h_REF.gc | 3 +- .../engine/draw/drawable-group-h_REF.gc | 3 +- .../reference/engine/draw/drawable-h_REF.gc | 3 +- .../draw/drawable-inline-array-h_REF.gc | 3 +- .../engine/draw/drawable-tree-h_REF.gc | 4 +- .../engine/draw/process-drawable-h_REF.gc | 3 +- .../engine/entity/actor-link-h_REF.gc | 6 +- .../reference/engine/entity/entity-h_REF.gc | 3 +- .../engine/game/effect-control-h_REF.gc | 6 +- .../reference/engine/game/game-h_REF.gc | 3 +- .../engine/game/generic-obs-h_REF.gc | 3 +- .../reference/engine/game/main-h_REF.gc | 3 +- .../engine/game/projectiles-h_REF.gc | 3 +- .../reference/engine/game/settings-h_REF.gc | 3 +- .../engine/game/task/game-task-h_REF.gc | 3 +- .../engine/game/task/hint-control-h_REF.gc | 3 +- .../engine/game/task/task-control-h_REF.gc | 3 +- .../reference/engine/game/video_REF.gc | 6 +- .../engine/geometry/bounding-box-h_REF.gc | 3 +- .../engine/geometry/geometry-h_REF.gc | 3 +- .../reference/engine/geometry/vol-h_REF.gc | 6 +- .../reference/engine/gfx/background-h_REF.gc | 3 +- .../reference/engine/gfx/decomp-h_REF.gc | 3 +- .../reference/engine/gfx/depth-cue-h_REF.gc | 3 +- .../reference/engine/gfx/eye-h_REF.gc | 3 +- .../reference/engine/gfx/font-h_REF.gc | 3 +- .../engine/gfx/generic/generic-vu1-h_REF.gc | 3 +- .../engine/gfx/generic/generic-work-h_REF.gc | 3 +- .../reference/engine/gfx/hw/display-h_REF.gc | 3 +- .../reference/engine/gfx/hw/display_REF.gc | 6 +- .../reference/engine/gfx/hw/video-h_REF.gc | 3 +- .../reference/engine/gfx/hw/vu1-user-h_REF.gc | 3 +- .../reference/engine/gfx/lights-h_REF.gc | 3 +- .../reference/engine/gfx/lights_REF.gc | 3 +- .../engine/gfx/merc/generic-merc-h_REF.gc | 3 +- .../reference/engine/gfx/merc/merc-h_REF.gc | 3 +- .../reference/engine/gfx/mood-h_REF.gc | 3 +- .../reference/engine/gfx/ocean/ocean-h_REF.gc | 3 +- .../reference/engine/gfx/ripple_REF.gc | 9 +- .../engine/gfx/shadow/shadow-h_REF.gc | 3 +- .../engine/gfx/shrub/shrubbery-h_REF.gc | 3 +- .../reference/engine/gfx/sky/sky-h_REF.gc | 3 +- .../engine/gfx/sparticle/sparticle-h_REF.gc | 3 +- .../gfx/sparticle/sparticle-launcher-h_REF.gc | 3 +- .../engine/gfx/sprite/sprite-h_REF.gc | 3 +- .../reference/engine/gfx/texture-h_REF.gc | 3 +- .../engine/gfx/tfrag/subdivide-h_REF.gc | 3 +- .../reference/engine/gfx/tfrag/tfrag-h_REF.gc | 3 +- .../engine/gfx/tie/generic-tie-h_REF.gc | 3 +- .../engine/gfx/tie/prototype-h_REF.gc | 3 +- .../reference/engine/gfx/tie/tie-h_REF.gc | 3 +- .../reference/engine/gfx/time-of-day-h_REF.gc | 3 +- .../reference/engine/gfx/vis/bsp-h_REF.gc | 3 +- .../reference/engine/gfx/water/water-h_REF.gc | 3 +- .../reference/engine/gfx/wind_REF.gc | 108 +++--- .../reference/engine/load/load-dgo_REF.gc | 33 +- .../reference/engine/load/loader-h_REF.gc | 3 +- .../reference/engine/load/ramdisk_REF.gc | 6 +- .../reference/engine/math/euler-h_REF.gc | 3 +- .../reference/engine/math/euler_REF.gc | 18 +- .../reference/engine/math/math_REF.gc | 3 +- .../reference/engine/math/quaternion-h_REF.gc | 3 +- .../reference/engine/math/quaternion_REF.gc | 6 +- .../reference/engine/math/transform-h_REF.gc | 3 +- .../reference/engine/math/transformq-h_REF.gc | 3 +- .../engine/math/trigonometry-h_REF.gc | 3 +- .../reference/engine/math/trigonometry_REF.gc | 6 +- .../reference/engine/math/vector-h_REF.gc | 28 +- .../reference/engine/math/vector_REF.gc | 55 +-- .../reference/engine/nav/path-h_REF.gc | 9 +- .../engine/physics/dynamics-h_REF.gc | 3 +- .../engine/physics/trajectory-h_REF.gc | 3 +- .../engine/physics/trajectory_REF.gc | 15 +- .../reference/engine/ps2/memcard-h_REF.gc | 21 +- .../reference/engine/ps2/pad_REF.gc | 15 +- .../reference/engine/ps2/rpc-h_REF.gc | 12 +- .../reference/engine/ps2/timer-h_REF.gc | 3 +- .../reference/engine/ps2/timer_REF.gc | 28 +- .../reference/engine/ps2/vif-h_REF.gc | 3 +- .../reference/engine/ps2/vu1-macros_REF.gc | 3 +- .../reference/engine/sound/gsound-h_REF.gc | 3 +- .../engine/target/joint-mod-h_REF.gc | 41 +- .../reference/engine/target/pat-h_REF.gc | 3 +- .../reference/engine/target/surface-h_REF.gc | 3 +- .../reference/engine/target/target-h_REF.gc | 3 +- .../reference/engine/ui/credits_REF.gc | 12 +- .../reference/engine/ui/hud-h_REF.gc | 3 +- .../reference/engine/ui/progress-h_REF.gc | 3 +- .../reference/engine/ui/text-h_REF.gc | 3 +- .../reference/engine/util/sync-info-h_REF.gc | 3 +- .../reference/engine/util/sync-info_REF.gc | 94 ++--- .../reference/engine/util/types-h_REF.gc | 3 +- test/decompiler/reference/kernel/dgo-h_REF.gc | 3 +- .../reference/kernel/gcommon_REF.gc | 3 +- .../reference/kernel/gkernel-h_REF.gc | 3 +- .../reference/kernel/gkernel_REF.gc | 27 +- .../reference/kernel/gstring-h_REF.gc | 4 +- .../reference/kernel/gstring_REF.gc | 9 +- .../reference/levels/beach/air-h_REF.gc | 3 +- .../levels/common/nav-enemy-h_REF.gc | 3 +- .../levels/common/rigid-body-h_REF.gc | 3 +- test/decompiler/test_DisasmVifDecompile.cpp | 293 +++++++------- test/decompiler/test_FormExpressionBuild.cpp | 3 +- test/decompiler/test_FormExpressionBuild2.cpp | 6 +- .../test_FormExpressionBuildLong.cpp | 3 +- test/decompiler/test_gkernel_decomp.cpp | 20 +- 146 files changed, 1085 insertions(+), 1653 deletions(-) diff --git a/decompiler/IR2/AtomicOp.cpp b/decompiler/IR2/AtomicOp.cpp index ddcce356b6..9d9bbee956 100644 --- a/decompiler/IR2/AtomicOp.cpp +++ b/decompiler/IR2/AtomicOp.cpp @@ -291,6 +291,12 @@ std::string get_simple_expression_op_name(SimpleExpression::Kind kind) { return "max.ui"; case SimpleExpression::Kind::PCPYLD: return "pcypld"; + case SimpleExpression::Kind::VECTOR_PLUS: + return "vector+!2"; + case SimpleExpression::Kind::VECTOR_MINUS: + return "vector-!2"; + case SimpleExpression::Kind::VECTOR_FLOAT_PRODUCT: + return "vector-float*!2"; default: assert(false); return {}; @@ -342,6 +348,10 @@ int get_simple_expression_arg_count(SimpleExpression::Kind kind) { case SimpleExpression::Kind::MAX_UNSIGNED: case SimpleExpression::Kind::PCPYLD: return 2; + case SimpleExpression::Kind::VECTOR_PLUS: + case SimpleExpression::Kind::VECTOR_MINUS: + case SimpleExpression::Kind::VECTOR_FLOAT_PRODUCT: + return 3; default: assert(false); return -1; @@ -362,6 +372,18 @@ SimpleExpression::SimpleExpression(Kind kind, const SimpleAtom& arg0, const Simp assert(get_simple_expression_arg_count(kind) == 2); } +SimpleExpression::SimpleExpression(Kind kind, + const SimpleAtom& arg0, + const SimpleAtom& arg1, + const SimpleAtom& arg2) + : n_args(3) { + m_args[0] = arg0; + m_args[1] = arg1; + m_args[2] = arg2; + m_kind = kind; + assert(get_simple_expression_arg_count(kind) == 3); +} + 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 5c954eabac..a01eb42728 100644 --- a/decompiler/IR2/AtomicOp.h +++ b/decompiler/IR2/AtomicOp.h @@ -223,6 +223,9 @@ class SimpleExpression { MIN_UNSIGNED, MAX_UNSIGNED, PCPYLD, + VECTOR_PLUS, + VECTOR_MINUS, + VECTOR_FLOAT_PRODUCT }; // how many arguments? @@ -235,6 +238,10 @@ class SimpleExpression { SimpleExpression() = default; SimpleExpression(Kind kind, const SimpleAtom& arg0); SimpleExpression(Kind kind, const SimpleAtom& arg0, const SimpleAtom& arg1); + SimpleExpression(Kind kind, + const SimpleAtom& arg0, + const SimpleAtom& arg1, + const SimpleAtom& arg2); 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; @@ -256,7 +263,7 @@ class SimpleExpression { private: Kind m_kind = Kind::INVALID; - SimpleAtom m_args[2]; + SimpleAtom m_args[3]; s8 n_args = -1; }; diff --git a/decompiler/IR2/AtomicOpTypeAnalysis.cpp b/decompiler/IR2/AtomicOpTypeAnalysis.cpp index a1018a7599..6cba06ba67 100644 --- a/decompiler/IR2/AtomicOpTypeAnalysis.cpp +++ b/decompiler/IR2/AtomicOpTypeAnalysis.cpp @@ -195,6 +195,11 @@ TP_Type SimpleExpression::get_type(const TypeState& input, case Kind::MOD_UNSIGNED: case Kind::PCPYLD: return TP_Type::make_from_ts("uint"); + case Kind::VECTOR_PLUS: + case Kind::VECTOR_MINUS: + return TP_Type::make_from_ts("vector"); + case Kind::VECTOR_FLOAT_PRODUCT: + return TP_Type::make_from_ts("vector"); default: throw std::runtime_error("Simple expression cannot get_type: " + to_form(env.file->labels, env).print()); diff --git a/decompiler/IR2/Form.cpp b/decompiler/IR2/Form.cpp index 64989798a9..0384d45f5a 100644 --- a/decompiler/IR2/Form.cpp +++ b/decompiler/IR2/Form.cpp @@ -1541,6 +1541,12 @@ std::string fixed_operator_to_string(FixedOperatorKind kind) { return ".asm.sllv.r0"; case FixedOperatorKind::ASM_MADDS: return ".asm.madd.s"; + case FixedOperatorKind::VECTOR_MINUS: + return "vector-!"; + case FixedOperatorKind::VECTOR_PLUS: + return "vector+!"; + case FixedOperatorKind::VECTOR_FLOAT_PRODUCT: + return "vector-float*!"; default: assert(false); return ""; diff --git a/decompiler/IR2/Form.h b/decompiler/IR2/Form.h index eefefd3c64..c7960d10e5 100644 --- a/decompiler/IR2/Form.h +++ b/decompiler/IR2/Form.h @@ -190,6 +190,17 @@ class SimpleExpressionElement : public FormElement { FormStack& stack, std::vector* result, bool allow_side_effects); + void update_from_stack_vector_plus_minus(bool is_add, + const Env& env, + FormPool& pool, + FormStack& stack, + std::vector* result, + bool allow_side_effects); + void update_from_stack_vector_float_product(const Env& env, + FormPool& pool, + FormStack& stack, + std::vector* result, + bool allow_side_effects); const SimpleExpression& expr() const { return m_expr; } diff --git a/decompiler/IR2/FormExpressionAnalysis.cpp b/decompiler/IR2/FormExpressionAnalysis.cpp index 9198770777..1acd9b92a9 100644 --- a/decompiler/IR2/FormExpressionAnalysis.cpp +++ b/decompiler/IR2/FormExpressionAnalysis.cpp @@ -950,6 +950,54 @@ void SimpleExpressionElement::update_from_stack_pcypld(const Env& env, result->push_back(new_form); } +void SimpleExpressionElement::update_from_stack_vector_plus_minus(bool is_add, + 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()}, env, + pool, stack, allow_side_effects); + + for (int i = 0; i < 3; i++) { + auto arg_type = env.get_types_before_op(m_my_idx).get(m_expr.get_arg(i).var().reg()); + if (arg_type.typespec() != TypeSpec("vector")) { + popped_args.at(i) = cast_form(popped_args.at(i), TypeSpec("vector"), pool, env); + } + } + + auto new_form = pool.alloc_element( + GenericOperator::make_fixed(is_add ? FixedOperatorKind::VECTOR_PLUS + : FixedOperatorKind::VECTOR_MINUS), + std::vector{popped_args.at(0), popped_args.at(1), popped_args.at(2)}); + result->push_back(new_form); +} + +void SimpleExpressionElement::update_from_stack_vector_float_product( + 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()}, env, + pool, stack, allow_side_effects); + + for (int i = 0; i < 3; i++) { + auto arg_type = env.get_types_before_op(m_my_idx).get(m_expr.get_arg(i).var().reg()); + TypeSpec desired_type(i == 2 ? "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_FLOAT_PRODUCT), + std::vector{popped_args.at(0), popped_args.at(1), popped_args.at(2)}); + result->push_back(new_form); +} + void SimpleExpressionElement::update_from_stack_copy_first_int_2(const Env& env, FixedOperatorKind kind, FormPool& pool, @@ -1559,6 +1607,15 @@ void SimpleExpressionElement::update_from_stack(const Env& env, case SimpleExpression::Kind::PCPYLD: update_from_stack_pcypld(env, pool, stack, result, allow_side_effects); break; + case SimpleExpression::Kind::VECTOR_PLUS: + update_from_stack_vector_plus_minus(true, env, pool, stack, result, allow_side_effects); + break; + case SimpleExpression::Kind::VECTOR_MINUS: + update_from_stack_vector_plus_minus(false, env, pool, stack, result, allow_side_effects); + break; + case SimpleExpression::Kind::VECTOR_FLOAT_PRODUCT: + update_from_stack_vector_float_product(env, pool, stack, result, allow_side_effects); + break; default: throw std::runtime_error( fmt::format("SimpleExpressionElement::update_from_stack NYI for {}", to_string(env))); @@ -3786,110 +3843,6 @@ Form* is_load_store_vector_to_reg(const Register& reg, return mr.maps.forms.at(0); } -/*! - * try to convert to an assembly op, return nullptr if we can't. - */ -const AsmOp* get_asm_op(FormElement* form) { - auto as_asm = dynamic_cast(form); - if (as_asm) { - return as_asm->op(); - } - - auto two = dynamic_cast(form); - if (two) { - return two->op(); - } - return nullptr; -} - -/*! - * Is this vmove.w vfX, vf0? This is a common trick to set the w field. - */ -bool is_set_w_1(const Register& reg, FormElement* form, const Env&) { - auto as_asm = get_asm_op(form); - if (!as_asm) { - return false; - } - auto instr = as_asm->instruction(); - - if (instr.kind != InstructionKind::VMOVE) { - return false; - } - - if (instr.cop2_dest != 1) { - return false; - } - - if (!instr.get_src(0).is_reg(Register(Reg::VF, 0))) { - return false; - } - - if (!instr.get_dst(0).is_reg(reg)) { - return false; - } - - return true; -} - -/*! - * Is this a COP2 op in the form vblah.mask vfX, vfY, vfZ? - */ -bool is_vf_3op_dst(InstructionKind kind, - u8 dest_mask, - const Register& dst, - const Register& src0, - const Register& src1, - - FormElement* form) { - auto as_asm = get_asm_op(form); - if (!as_asm) { - return false; - } - auto instr = as_asm->instruction(); - - if (instr.kind != kind) { - return false; - } - - if (instr.cop2_dest != dest_mask) { - return false; - } - - if (!instr.get_src(0).is_reg(src0)) { - return false; - } - - if (!instr.get_src(1).is_reg(src1)) { - return false; - } - - if (!instr.get_dst(0).is_reg(dst)) { - return false; - } - - return true; -} - -/*! - * Make a vf register. - */ -Register vfr(int idx) { - return Register(Reg::VF, idx); -} - -/*! - * Try to pop a variable from the stack again. If we are detecting a macro that flips argument - * evaluation order, we can use this to fix it up and remove temporaries. - * If the previous pop succeeded, this does nothing. - */ -Form* repop_arg(Form* in, FormStack& stack, const Env& env, FormPool& pool) { - auto as_atom = form_as_atom(in); - if (as_atom && as_atom->is_var()) { - return pop_to_forms({as_atom->var()}, env, pool, stack, true).at(0); - } - return in; -} - /*! * Imagine: * x = foo @@ -3934,122 +3887,6 @@ std::optional form_as_ra(Form* form) { return {}; } -/*! - * Handle an inlined call to vector-! - */ -bool try_vector_add_sub_inline(const Env& env, - FormPool& pool, - FormStack& stack, - bool is_add, - FormElement* store_element) { - // we are looking for 5 ops, none are sets, the store element is passed in separately, before - // propagating - auto elts = stack.try_getting_active_stack_entries({false, false, false, false}); - if (!elts) { - return false; - } - - int idx = 0; - if (is_add) { - // third (.vmove.w vf6 vf0) - if (!is_set_w_1(Register(Reg::VF, 6), elts->at(idx++).elt, env)) { - return false; - } - } - - // check first: (.lvf vf4 (&-> arg1 quad)) - auto first = - is_load_store_vector_to_reg(Register(Reg::VF, 4), elts->at(idx++).elt, true, nullptr); - if (!first) { - return false; - } - - // second (.lvf vf5 (&-> a0-1 quad)) - auto second = - is_load_store_vector_to_reg(Register(Reg::VF, 5), elts->at(idx++).elt, true, nullptr); - if (!second) { - return false; - } - - if (!is_add) { - // third (.vmove.w vf6 vf0) - if (!is_set_w_1(Register(Reg::VF, 6), elts->at(idx++).elt, env)) { - return false; - } - } - - // 4th (.vsub.xyz vf6 vf4 vf5) - if (!is_vf_3op_dst(is_add ? InstructionKind::VADD : InstructionKind::VSUB, 14, vfr(6), vfr(4), - vfr(5), elts->at(idx++).elt)) { - return false; - } - - // 5th (and remember the index) - int store_idx = -1; - auto store = is_load_store_vector_to_reg(Register(Reg::VF, 6), store_element, false, &store_idx); - if (!store) { - return false; - } - - // the store here _should_ have failed propagation and just given us a variable. - // if this is causing issues, we can run this check before propagating, as well call this from - // the function that attempts the pop. - auto store_var = form_as_ra(store); - if (!store_var) { - env.func->warnings.general_warning("Almost found vector add/sub, but couldn't get store var."); - return false; - } - - // remove these from the stack. - stack.pop(4); - - // ignore the store as a use. This will allow the entire vector-! expression to be expression - // propagated, if it is appropriate. - if (store_var) { - auto menv = const_cast(&env); - menv->disable_use(*store_var); - } - - // repop the arguments in the opposite order. this can eliminate temporaries as this will - // use the opposite order of the original attempt. - second = repop_arg(second, stack, env, pool); - first = repop_arg(first, stack, env, pool); - - // now try to see if we can pop the first arg (destination vector). - bool got_orig = false; - RegisterAccess orig; - - store = repop_passthrough_arg(store, stack, env, &orig, &got_orig); - - // create the actual vector-! form - Form* new_thing = pool.alloc_single_element_form( - nullptr, - GenericOperator::make_function(pool.alloc_single_element_form( - nullptr, is_add ? "vector+!" : "vector-!")), - std::vector{store, first, second}); - - if (got_orig) { - // we got a value for the destination. because we used the special repop passthrough, - // we're responsible for inserting a set to set the var that we "stole" from. - // We do this through push_value_to_reg, so it can be propagated if needed, but only if - // somebody will actually read the output. - // to tell, we look at the live out of the store op and the end - the earlier one would of - // course be live out always because the store will read it again. - auto& op_info = env.reg_use().op.at(store_idx); - if (op_info.live.find(orig.reg()) == op_info.live.end()) { - // nobody reads it, don't bother. - stack.push_form_element(new_thing->elts().at(0), true); - } else { - stack.push_value_to_reg(orig, new_thing, true, TypeSpec("vector")); - } - - } else { - stack.push_form_element(new_thing->elts().at(0), true); - } - - return true; -} - bool try_vector_reset_inline(const Env& env, FormPool& pool, FormStack& stack, @@ -4132,14 +3969,6 @@ void VectorFloatLoadStoreElement::push_to_stack(const Env& env, FormPool& pool, auto name = env.func->guessed_name.to_string(); // don't find vector-! inside of vector-!. if (!m_is_load && name != "vector-!" && name != "vector+!" && name != "vector-reset!") { - if (try_vector_add_sub_inline(env, pool, stack, true, this)) { - return; - } - - if (try_vector_add_sub_inline(env, pool, stack, false, this)) { - return; - } - if (try_vector_reset_inline(env, pool, stack, this)) { return; } diff --git a/decompiler/IR2/IR2_common.h b/decompiler/IR2/IR2_common.h index e00f1063c4..d807365c83 100644 --- a/decompiler/IR2/IR2_common.h +++ b/decompiler/IR2/IR2_common.h @@ -148,6 +148,9 @@ enum class FixedOperatorKind { ADDRESS_OF, ASM_SLLV_R0, ASM_MADDS, + VECTOR_PLUS, + VECTOR_MINUS, + VECTOR_FLOAT_PRODUCT, INVALID }; diff --git a/decompiler/analysis/atomic_op_builder.cpp b/decompiler/analysis/atomic_op_builder.cpp index 81c3d6e43c..a0d2ab86f1 100644 --- a/decompiler/analysis/atomic_op_builder.cpp +++ b/decompiler/analysis/atomic_op_builder.cpp @@ -45,6 +45,10 @@ Register rsp() { return make_gpr(Reg::SP); } +Register make_vf(int idx) { + return Register(Reg::VF, idx); +} + ///////////////////////// // Variable Helpers ///////////////////////// @@ -1393,6 +1397,100 @@ std::unique_ptr convert_4(const Instruction& i0, // OP 5 Conversions ////////////////////// +std::unique_ptr convert_vector_plus(const Instruction& i0, + const Instruction& i1, + const Instruction& i2, + const Instruction& i3, + const Instruction& i4, + int idx) { + // vmove.w vf6, vf0 + if (i0.kind != InstructionKind::VMOVE || i0.get_src(0).get_reg() != make_vf(0) || + i0.get_dst(0).get_reg() != make_vf(6) || i0.cop2_dest != 1) { + return nullptr; + } + + // lqc2 vf4, 0(a1) (src1) + if (i1.kind != InstructionKind::LQC2 || i1.get_dst(0).get_reg() != make_vf(4) || + !i1.get_src(0).is_imm(0)) { + return nullptr; + } + Register src1 = i1.get_src(1).get_reg(); + + // lqc2 vf5, 0(a2) (src2) + if (i2.kind != InstructionKind::LQC2 || i2.get_dst(0).get_reg() != make_vf(5) || + !i2.get_src(0).is_imm(0)) { + return nullptr; + } + Register src2 = i2.get_src(1).get_reg(); + + // vadd.xyz vf6, vf4, vf5 + if (i3.kind != InstructionKind::VADD || i3.get_dst(0).get_reg() != make_vf(6) || + i3.get_src(0).get_reg() != make_vf(4) || i3.get_src(1).get_reg() != make_vf(5) || + i3.cop2_dest != 14) { + return nullptr; + } + + // sqc2 vf6, 0(a0) (dst) + if (i4.kind != InstructionKind::SQC2 || i4.get_src(0).get_reg() != make_vf(6) || + !i4.get_src(1).is_imm(0)) { + return nullptr; + } + Register dst = i4.get_src(2).get_reg(); + + return std::make_unique( + make_dst_var(dst, idx), + SimpleExpression(SimpleExpression::Kind::VECTOR_PLUS, make_src_atom(dst, idx), + make_src_atom(src1, idx), make_src_atom(src2, idx)), + idx); +} + +std::unique_ptr convert_vector_minus(const Instruction& i0, + const Instruction& i1, + const Instruction& i2, + const Instruction& i3, + const Instruction& i4, + int idx) { + // lqc2 vf4, 0(a1) (src1) + if (i0.kind != InstructionKind::LQC2 || i0.get_dst(0).get_reg() != make_vf(4) || + !i0.get_src(0).is_imm(0)) { + return nullptr; + } + Register src1 = i0.get_src(1).get_reg(); + + // lqc2 vf5, 0(a2) (src2) + if (i1.kind != InstructionKind::LQC2 || i1.get_dst(0).get_reg() != make_vf(5) || + !i1.get_src(0).is_imm(0)) { + return nullptr; + } + Register src2 = i1.get_src(1).get_reg(); + + // vmove.w vf6, vf0 + if (i2.kind != InstructionKind::VMOVE || i2.get_src(0).get_reg() != make_vf(0) || + i2.get_dst(0).get_reg() != make_vf(6) || i2.cop2_dest != 1) { + return nullptr; + } + + // vadd.xyz vf6, vf4, vf5 + if (i3.kind != InstructionKind::VSUB || i3.get_dst(0).get_reg() != make_vf(6) || + i3.get_src(0).get_reg() != make_vf(4) || i3.get_src(1).get_reg() != make_vf(5) || + i3.cop2_dest != 14) { + return nullptr; + } + + // sqc2 vf6, 0(a0) (dst) + if (i4.kind != InstructionKind::SQC2 || i4.get_src(0).get_reg() != make_vf(6) || + !i4.get_src(1).is_imm(0)) { + return nullptr; + } + Register dst = i4.get_src(2).get_reg(); + + return std::make_unique( + make_dst_var(dst, idx), + SimpleExpression(SimpleExpression::Kind::VECTOR_MINUS, make_src_atom(dst, idx), + make_src_atom(src1, idx), make_src_atom(src2, idx)), + idx); +} + std::unique_ptr convert_5(const Instruction& i0, const Instruction& i1, const Instruction& i2, @@ -1410,6 +1508,86 @@ std::unique_ptr convert_5(const Instruction& i0, i3.get_src(0).is_reg(s6) && i4.kind == InstructionKind::MFLO1 && i4.get_dst(0).is_reg(s6)) { return std::make_unique(SpecialOp::Kind::SUSPEND, idx); } + + auto as_vector_plus = convert_vector_plus(i0, i1, i2, i3, i4, idx); + if (as_vector_plus) { + return as_vector_plus; + } + + auto as_vector_minus = convert_vector_minus(i0, i1, i2, i3, i4, idx); + if (as_vector_minus) { + return as_vector_minus; + } + return nullptr; +} + +std::unique_ptr convert_vector_float_product(const Instruction& i0, + const Instruction& i1, + const Instruction& i2, + const Instruction& i3, + const Instruction& i4, + const Instruction& i5, + int idx) { + // lqc2 vf1, 0(vect_in) + if (i0.kind != InstructionKind::LQC2 || i0.get_dst(0).get_reg() != make_vf(1) || + !i0.get_src(0).is_imm(0)) { + return nullptr; + } + Register vec_src = i0.get_src(1).get_reg(); + + // mfc1 gpr_temp, float_in + if (i1.kind != InstructionKind::MFC1) { + return nullptr; + } + Register gpr_temp = i1.get_dst(0).get_reg(); + Register float_src = i1.get_src(0).get_reg(); + + // qmtc2.i vf2, gpr_temp + if (i2.kind != InstructionKind::QMTC2 || i2.get_dst(0).get_reg() != make_vf(2) || + i2.get_src(0).get_reg() != gpr_temp) { + return nullptr; + } + + // vaddx.w vf1, vf0, vf0 + if (i3.kind != InstructionKind::VADD_BC || i3.get_dst(0).get_reg() != make_vf(1) || + i3.get_src(0).get_reg() != make_vf(0) || i3.get_src(1).get_reg() != make_vf(0) || + i3.cop2_bc != 0 || i3.cop2_dest != 1) { + return nullptr; + } + + // vmulx.xyz vf1, vf1, vf2 + if (i4.kind != InstructionKind::VMUL_BC || i4.get_dst(0).get_reg() != make_vf(1) || + i4.get_src(0).get_reg() != make_vf(1) || i4.get_src(1).get_reg() != make_vf(2) || + i4.cop2_dest != 14 || i4.cop2_bc != 0) { + return nullptr; + } + + // sqc2 vf1, 0(gE) + if (i5.kind != InstructionKind::SQC2 || i5.get_src(0).get_reg() != make_vf(1) || + !i5.get_src(1).is_imm(0)) { + return nullptr; + } + Register dst = i5.get_src(2).get_reg(); + + return std::make_unique( + make_dst_var(dst, idx), + SimpleExpression(SimpleExpression::Kind::VECTOR_FLOAT_PRODUCT, make_src_atom(dst, idx), + make_src_atom(vec_src, idx), make_src_atom(float_src, idx)), + idx); +} + +std::unique_ptr convert_6(const Instruction& i0, + const Instruction& i1, + const Instruction& i2, + const Instruction& i3, + const Instruction& i4, + const Instruction& i5, + int idx) { + auto as_vector_float_product = convert_vector_float_product(i0, i1, i2, i3, i4, i5, idx); + if (as_vector_float_product) { + return as_vector_float_product; + } + return nullptr; } @@ -1445,7 +1623,16 @@ int convert_block_to_atomic_ops(int begin_idx, warnings.warn_sq_lq(); } - if (n_instr >= 5) { + if (n_instr >= 6) { + // try 6 instructions + op = convert_6(instr[0], instr[1], instr[2], instr[3], instr[4], instr[5], op_idx); + if (op) { + converted = true; + length = 6; + } + } + + if (!converted && n_instr >= 5) { // try 5 instructions op = convert_5(instr[0], instr[1], instr[2], instr[3], instr[4], op_idx); if (op) { diff --git a/decompiler/analysis/insert_lets.cpp b/decompiler/analysis/insert_lets.cpp index 9129b4041c..67f5650f0d 100644 --- a/decompiler/analysis/insert_lets.cpp +++ b/decompiler/analysis/insert_lets.cpp @@ -336,6 +336,23 @@ FormElement* fix_up_abs_2(LetElement* in, const Env& env, FormPool& pool) { return in; } +FormElement* rewrite_empty_let(LetElement* in, const Env&, FormPool&) { + if (in->entries().size() != 1) { + return nullptr; + } + + if (!in->body()->elts().empty()) { + return nullptr; + } + + auto reg = in->entries().at(0).dest.reg(); + if (reg.get_kind() == Reg::GPR && !reg.allowed_local_gpr()) { + return nullptr; + } + + return in->entries().at(0).src->try_as_single_element(); +} + /*! * Attempt to rewrite a let as another form. If it cannot be rewritten, this will return nullptr. */ @@ -360,6 +377,11 @@ FormElement* rewrite_let(LetElement* in, const Env& env, FormPool& pool) { return as_abs_2; } + auto as_unused = rewrite_empty_let(in, env, pool); + if (as_unused) { + return as_unused; + } + // nothing matched. return nullptr; } diff --git a/goal_src/engine/camera/cam-interface.gc b/goal_src/engine/camera/cam-interface.gc index 173bff79da..5215eed92f 100644 --- a/goal_src/engine/camera/cam-interface.gc +++ b/goal_src/engine/camera/cam-interface.gc @@ -8,28 +8,10 @@ ;; definition for function position-in-front-of-camera! (defun position-in-front-of-camera! ((arg0 vector) (arg1 float) (arg2 float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a0-2 (-> *math-camera* inv-camera-rot vector 2)) - (f0-0 arg1) - ) - (.lvf vf1 (&-> a0-2 quad)) - (let ((a0-3 f0-0)) - (.mov vf2 a0-3) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-0 quad) vf1) - ) - (vector+float*! arg0 arg0 (-> *math-camera* inv-camera-rot vector 1) arg2) - (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 matrix-local->world diff --git a/goal_src/engine/camera/camera-h.gc b/goal_src/engine/camera/camera-h.gc index 12d851690b..0209a32012 100644 --- a/goal_src/engine/camera/camera-h.gc +++ b/goal_src/engine/camera/camera-h.gc @@ -238,77 +238,37 @@ ;; INFO: Return type mismatch int vs none. ;; TODO - vector-float*! replacement (defmethod TODO-RENAME-10 cam-vector-seeker ((obj cam-vector-seeker) (arg0 vector)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((f0-0 0.0)) - ) - (cond - (arg0 - (vector+! gp-0 (-> obj target) arg0) - (vector-! gp-0 gp-0 (-> obj value)) - ) - (else - (vector-! gp-0 (-> obj target) (-> obj value)) - ) - ) - (let ((f30-1 (* (-> obj max-partial) (vector-length gp-0)))) - (let ((v1-3 gp-0)) - (let ((a0-5 gp-0) - (f0-3 (* (-> obj accel) (-> *display* time-adjust-ratio))) - ) - (.lvf vf1 (&-> a0-5 quad)) - (let ((a0-6 f0-3)) - (.mov vf2 a0-6) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-3 quad) vf1) - ) - (vector+! (-> obj vel) (-> obj vel) gp-0) - (let ((f0-4 (vector-length (-> obj vel))) - (f1-2 (fmin f30-1 (-> obj max-vel))) - ) - (when (< f1-2 f0-4) - (let ((v1-6 (-> obj vel))) - (let ((a0-9 (-> obj vel)) - (f0-5 (/ f1-2 f0-4)) - ) - (.lvf vf1 (&-> a0-9 quad)) - (let ((a0-10 f0-5)) - (.mov vf2 a0-10) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-6 quad) vf1) - ) - ) - ) - ) - (let ((v1-7 gp-0)) - (let ((a0-11 (-> obj vel)) - (f0-6 (-> *display* time-adjust-ratio)) - ) - (.lvf vf1 (&-> a0-11 quad)) - (let ((a0-12 f0-6)) - (.mov vf2 a0-12) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (vector+! (-> obj value) (-> obj value) gp-0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + 0.0 + (cond + (arg0 + (vector+! gp-0 (-> obj target) arg0) + (vector-! gp-0 gp-0 (-> obj value)) + ) + (else + (vector-! gp-0 (-> obj target) (-> obj value)) + ) ) - (let ((v0-2 0)) + (let ((f30-1 (* (-> obj max-partial) (vector-length gp-0)))) + (vector-float*! + gp-0 + gp-0 + (* (-> obj accel) (-> *display* time-adjust-ratio)) + ) + (vector+! (-> obj vel) (-> obj vel) gp-0) + (let ((f0-4 (vector-length (-> obj vel))) + (f1-2 (fmin f30-1 (-> obj max-vel))) + ) + (if (< f1-2 f0-4) + (vector-float*! (-> obj vel) (-> obj vel) (/ f1-2 f0-4)) + ) + ) ) - (none) + (vector-float*! gp-0 (-> obj vel) (-> *display* time-adjust-ratio)) + (vector+! (-> obj value) (-> obj value) gp-0) ) + 0 + (none) ) ;; definition of type cam-rotation-tracker diff --git a/goal_src/engine/gfx/wind.gc b/goal_src/engine/gfx/wind.gc index e77b576a1e..0ee8bfc63c 100644 --- a/goal_src/engine/gfx/wind.gc +++ b/goal_src/engine/gfx/wind.gc @@ -11,72 +11,42 @@ ;; definition for function update-wind ;; INFO: Return type mismatch int vs none. (defun update-wind ((arg0 wind-work) (arg1 (array uint8))) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) + (let* ((f0-1 (+ (-> arg0 wind-normal w) (rand-vu-float-range -1024.0 1024.0))) + (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0))) ) - (init-vf0-vector) - (let* - ((f0-1 (+ (-> arg0 wind-normal w) (rand-vu-float-range -1024.0 1024.0))) - (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0))) - ) (set! (-> arg0 wind-normal w) f30-1) (set! (-> arg0 wind-normal x) (cos f30-1)) (set! (-> arg0 wind-normal z) (sin f30-1)) ) - (set! (-> arg0 wind-time) (+ (-> arg0 wind-time) 1)) - (let* ((s4-0 (logand (-> arg0 wind-time) 63)) - (f0-4 (rand-vu-float-range 0.0 100.0)) - (v1-5 (/ (-> arg0 wind-time) (the-as uint 120))) - (f1-6 - (* - 0.008333334 - (the float (mod (-> arg0 wind-time) (the-as uint 120))) - ) + (set! (-> arg0 wind-time) (+ (-> arg0 wind-time) 1)) + (let* ((s4-0 (logand (-> arg0 wind-time) 63)) + (f0-4 (rand-vu-float-range 0.0 100.0)) + (v1-5 (/ (-> arg0 wind-time) (the-as uint 120))) + (f1-6 (* 0.008333334 + (the float (mod (-> arg0 wind-time) (the-as uint 120))) + ) ) - (f2-4 - (* - 0.0625 - (the float (-> arg1 (mod (the-as int v1-5) (-> arg1 length)))) - ) + (f2-4 (* 0.0625 + (the float (-> arg1 (mod (the-as int v1-5) (-> arg1 length)))) + ) ) - (f0-5 - (* - (+ - (* - (- - (* - 0.0625 - (the - float - (-> arg1 (mod (the-as int (+ v1-5 1)) (-> arg1 length))) - ) - ) - f2-4 - ) - f1-6 - ) - f2-4 - ) - f0-4 - ) + (f0-5 (* (+ (* (- (* 0.0625 + (the float (-> arg1 (mod (the-as int (+ v1-5 1)) (-> arg1 length))) + ) + ) + f2-4 + ) + f1-6 + ) + f2-4 + ) + f0-4 + ) ) - ) + ) (set! (-> *wind-work* wind-force s4-0) f0-5) - (let ((v1-14 (-> *wind-work* wind-array s4-0))) - (let ((a0-15 (-> arg0 wind-normal))) - (.lvf vf1 (&-> a0-15 quad)) - ) - (let ((a0-16 f0-5)) - (.mov vf2 a0-16) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-14 quad) vf1) - ) + (vector-float*! (-> *wind-work* wind-array s4-0) (-> arg0 wind-normal) f0-5) ) - (let ((v0-4 0)) - ) - (none) - ) + 0 + (none) ) diff --git a/goal_src/engine/math/vector.gc b/goal_src/engine/math/vector.gc index 35c470d9b5..8af926b6bb 100644 --- a/goal_src/engine/math/vector.gc +++ b/goal_src/engine/math/vector.gc @@ -521,26 +521,8 @@ (defun vector-v! ((arg0 vector)) "Convert a velocity to a displacement per frame. The velocity should be in X/actual_second" - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a1-0 arg0) - (f0-0 (-> *display* seconds-per-frame)) - ) - (.lvf vf1 (&-> a1-0 quad)) - (let ((a1-1 f0-0)) - (.mov vf2 a1-1) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-0 quad) vf1) - ) - arg0 - ) + (vector-float*! arg0 arg0 (-> *display* seconds-per-frame)) + arg0 ) (defun vector-v+! ((result vector) (position vector) (velocity vector)) @@ -564,26 +546,7 @@ (defun vector-v*float! ((delta-p vector) (velocity vector) (scale float)) "Go from velocity to delta-p per frame, scaling by scale" - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((v0-0 delta-p)) - (let ((v1-0 velocity) - (f0-1 (* scale (-> *display* seconds-per-frame))) - ) - (.lvf vf1 (&-> v1-0 quad)) - (let ((v1-1 f0-1)) - (.mov vf2 v1-1) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v0-0 quad) vf1) - v0-0 - ) - ) + (vector-float*! delta-p velocity (* scale (-> *display* seconds-per-frame))) ) (defun vector-v*float++! ((position vector) (velocity vector) (scale float)) diff --git a/goal_src/engine/util/sync-info.gc b/goal_src/engine/util/sync-info.gc index 77488aec46..cd16fee149 100644 --- a/goal_src/engine/util/sync-info.gc +++ b/goal_src/engine/util/sync-info.gc @@ -548,80 +548,30 @@ ;; definition for method 10 of type oscillating-vector ;; todo vector-float*! (defmethod dummy-10 oscillating-vector ((obj oscillating-vector) (arg0 vector)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (cond - (arg0 - (vector+! s5-0 (-> obj target) arg0) - (vector-! s5-0 s5-0 (-> obj value)) - ) - (else - (vector-! s5-0 (-> obj target) (-> obj value)) - ) - ) - (let ((v1-3 s5-0)) - (let ((a0-4 s5-0) - (f0-1 (* (-> obj accel) (-> *display* time-adjust-ratio))) - ) - (.lvf vf1 (&-> a0-4 quad)) - (let ((a0-5 f0-1)) - (.mov vf2 a0-5) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-3 quad) vf1) - ) - (vector+! (-> obj vel) (-> obj vel) s5-0) - (let ((f0-2 (vector-length (-> obj vel)))) - (when (< (-> obj max-vel) f0-2) - (let ((v1-6 (-> obj vel))) - (let ((a0-8 (-> obj vel)) - (f0-3 (/ (-> obj max-vel) f0-2)) - ) - (.lvf vf1 (&-> a0-8 quad)) - (let ((a0-9 f0-3)) - (.mov vf2 a0-9) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-6 quad) vf1) - ) - ) - ) - (let ((v1-7 (-> obj vel))) - (let ((a0-10 (-> obj vel)) - (f0-4 (-> obj damping)) - ) - (.lvf vf1 (&-> a0-10 quad)) - (let ((a0-11 f0-4)) - (.mov vf2 a0-11) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (let ((v1-8 s5-0)) - (let ((a0-12 (-> obj vel)) - (f0-5 (-> *display* time-adjust-ratio)) - ) - (.lvf vf1 (&-> a0-12 quad)) - (let ((a0-13 f0-5)) - (.mov vf2 a0-13) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-8 quad) vf1) - ) - (vector+! (-> obj value) (-> obj value) s5-0) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (cond + (arg0 + (vector+! s5-0 (-> obj target) arg0) + (vector-! s5-0 s5-0 (-> obj value)) + ) + (else + (vector-! s5-0 (-> obj target) (-> obj value)) + ) ) - (-> obj value) + (vector-float*! + s5-0 + s5-0 + (* (-> obj accel) (-> *display* time-adjust-ratio)) + ) + (vector+! (-> obj vel) (-> obj vel) s5-0) + (let ((f0-2 (vector-length (-> obj vel)))) + (if (< (-> obj max-vel) f0-2) + (vector-float*! (-> obj vel) (-> obj vel) (/ (-> obj max-vel) f0-2)) + ) + ) + (vector-float*! (-> obj vel) (-> obj vel) (-> obj damping)) + (vector-float*! s5-0 (-> obj vel) (-> *display* time-adjust-ratio)) + (vector+! (-> obj value) (-> obj value) s5-0) ) + (-> obj value) ) diff --git a/test/decompiler/reference/engine/ambient/mood-tables_REF.gc b/test/decompiler/reference/engine/ambient/mood-tables_REF.gc index 1af27e5fe9..ccefd2ae8a 100644 --- a/test/decompiler/reference/engine/ambient/mood-tables_REF.gc +++ b/test/decompiler/reference/engine/ambient/mood-tables_REF.gc @@ -411,8 +411,7 @@ ) ) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -434,8 +433,7 @@ (vector4-lerp! s5-0 s5-0 (-> arg0 fog-color) f0-8) ) ) - (let ((v0-3 0)) - ) + 0 (none) ) @@ -478,8 +476,7 @@ (vector4-lerp! s5-0 s5-0 (-> arg0 fog-color) f0-15) ) ) - (let ((v0-6 0)) - ) + 0 (none) ) diff --git a/test/decompiler/reference/engine/anim/bones-h_REF.gc b/test/decompiler/reference/engine/anim/bones-h_REF.gc index c4b9e3ad30..4beadda4d5 100644 --- a/test/decompiler/reference/engine/anim/bones-h_REF.gc +++ b/test/decompiler/reference/engine/anim/bones-h_REF.gc @@ -226,5 +226,4 @@ ) ;; failed to figure out what this is: -(let ((v0-18 0)) - ) +0 diff --git a/test/decompiler/reference/engine/anim/joint-h_REF.gc b/test/decompiler/reference/engine/anim/joint-h_REF.gc index 6c003f1f16..e43909a847 100644 --- a/test/decompiler/reference/engine/anim/joint-h_REF.gc +++ b/test/decompiler/reference/engine/anim/joint-h_REF.gc @@ -193,5 +193,4 @@ ) ;; failed to figure out what this is: -(let ((v0-10 0)) - ) +0 diff --git a/test/decompiler/reference/engine/anim/mspace-h_REF.gc b/test/decompiler/reference/engine/anim/mspace-h_REF.gc index 57a5e95bdd..ebfbc438bc 100644 --- a/test/decompiler/reference/engine/anim/mspace-h_REF.gc +++ b/test/decompiler/reference/engine/anim/mspace-h_REF.gc @@ -154,5 +154,4 @@ ) ;; failed to figure out what this is: -(let ((v0-13 0)) - ) +0 diff --git a/test/decompiler/reference/engine/camera/cam-debug-h_REF.gc b/test/decompiler/reference/engine/camera/cam-debug-h_REF.gc index e2f6bf6e0c..c6e08b280f 100644 --- a/test/decompiler/reference/engine/camera/cam-debug-h_REF.gc +++ b/test/decompiler/reference/engine/camera/cam-debug-h_REF.gc @@ -16,8 +16,7 @@ (set! *redline-index* (+ *redline-index* 1)) (when (>= *redline-index* 400) (set! *redline-index* 0) - (let ((v0-1 0)) - ) + 0 ) (none) ) @@ -42,8 +41,7 @@ (set! *blueline-index* (+ *blueline-index* 1)) (when (>= *blueline-index* 400) (set! *blueline-index* 0) - (let ((v0-1 0)) - ) + 0 ) (none) ) @@ -68,8 +66,7 @@ (set! *greenline-index* (+ *greenline-index* 1)) (when (>= *greenline-index* 400) (set! *greenline-index* 0) - (let ((v0-1 0)) - ) + 0 ) (none) ) @@ -94,8 +91,7 @@ (set! *yellowline-index* (+ *yellowline-index* 1)) (when (>= *yellowline-index* 400) (set! *yellowline-index* 0) - (let ((v0-1 0)) - ) + 0 ) (none) ) @@ -120,8 +116,7 @@ (set! *timeplot-index* (+ *timeplot-index* 1)) (when (>= *timeplot-index* 400) (set! *timeplot-index* 0) - (let ((v0-1 0)) - ) + 0 ) (none) ) @@ -137,10 +132,6 @@ (define-perm *cam-layout* symbol #f) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 ) - - - diff --git a/test/decompiler/reference/engine/camera/cam-interface-h_REF.gc b/test/decompiler/reference/engine/camera/cam-interface-h_REF.gc index f3be3c33c8..f43db6dcda 100644 --- a/test/decompiler/reference/engine/camera/cam-interface-h_REF.gc +++ b/test/decompiler/reference/engine/camera/cam-interface-h_REF.gc @@ -23,9 +23,4 @@ (define-perm *camera-orbit-target* process-drawable #f) ;; failed to figure out what this is: -(let ((v0-0 0)) - ) - - - - +0 diff --git a/test/decompiler/reference/engine/camera/cam-interface_REF.gc b/test/decompiler/reference/engine/camera/cam-interface_REF.gc index f2dab63816..8c1baf0c04 100644 --- a/test/decompiler/reference/engine/camera/cam-interface_REF.gc +++ b/test/decompiler/reference/engine/camera/cam-interface_REF.gc @@ -3,28 +3,10 @@ ;; definition for function position-in-front-of-camera! (defun position-in-front-of-camera! ((arg0 vector) (arg1 float) (arg2 float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a0-2 (-> *math-camera* inv-camera-rot vector 2)) - (f0-0 arg1) - ) - (.lvf vf1 (&-> a0-2 quad)) - (let ((a0-3 f0-0)) - (.mov vf2 a0-3) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-0 quad) vf1) - ) - (vector+float*! arg0 arg0 (-> *math-camera* inv-camera-rot vector 1) arg2) - (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 matrix-local->world @@ -93,8 +75,7 @@ (send-event-function *camera* a1-2) ) ) - (let ((v0-4 0)) - ) + 0 (none) ) ) diff --git a/test/decompiler/reference/engine/camera/cam-update-h_REF.gc b/test/decompiler/reference/engine/camera/cam-update-h_REF.gc index d80ca8c71f..d43dcd4555 100644 --- a/test/decompiler/reference/engine/camera/cam-update-h_REF.gc +++ b/test/decompiler/reference/engine/camera/cam-update-h_REF.gc @@ -10,8 +10,7 @@ ;; failed to figure out what this is: (when (or (not *camera-look-through-other*) (zero? *camera-look-through-other*)) (set! *camera-look-through-other* 0) - (let ((v1-4 0)) - ) + 0 ) ;; definition (perm) for symbol *camera-other-fov*, type bfloat @@ -34,5 +33,4 @@ (define-perm *camera-other-root* vector (vector-reset! (new 'global 'vector))) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/camera/camera-h_REF.gc b/test/decompiler/reference/engine/camera/camera-h_REF.gc index c309fee97b..27f35ab5df 100644 --- a/test/decompiler/reference/engine/camera/camera-h_REF.gc +++ b/test/decompiler/reference/engine/camera/camera-h_REF.gc @@ -247,8 +247,7 @@ (set! (-> obj accel) arg1) (set! (-> obj max-vel) arg2) (set! (-> obj max-partial) arg3) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -264,18 +263,15 @@ (set! (-> obj accel) (-> arg0 accel)) (set! (-> obj max-vel) (-> arg0 max-vel)) (set! (-> obj max-partial) (-> arg0 max-partial)) - (let ((v0-0 0)) - ) + 0 (none) ) ;; definition for method 11 of type cam-float-seeker ;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-11 cam-float-seeker ((obj cam-float-seeker) (arg0 float)) - (let ((f0-0 0.0)) - ) - (let ((f0-1 0.0)) - ) + 0.0 + 0.0 (let* ((f1-2 (- (+ (-> obj target) arg0) (-> obj value))) (f0-5 (* (-> obj max-partial) (fabs f1-2))) ) @@ -293,8 +289,7 @@ (let ((f0-10 (* (-> obj vel) (-> *display* time-adjust-ratio)))) (set! (-> obj value) (+ (-> obj value) f0-10)) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -358,8 +353,7 @@ (set! (-> obj accel) arg1) (set! (-> obj max-vel) arg2) (set! (-> obj max-partial) arg3) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -369,77 +363,37 @@ TODO-RENAME-10 cam-vector-seeker ((obj cam-vector-seeker) (arg0 vector)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((f0-0 0.0)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + 0.0 + (cond + (arg0 + (vector+! gp-0 (-> obj target) arg0) + (vector-! gp-0 gp-0 (-> obj value)) ) - (cond - (arg0 - (vector+! gp-0 (-> obj target) arg0) - (vector-! gp-0 gp-0 (-> obj value)) - ) - (else - (vector-! gp-0 (-> obj target) (-> obj value)) - ) + (else + (vector-! gp-0 (-> obj target) (-> obj value)) ) - (let ((f30-1 (* (-> obj max-partial) (vector-length gp-0)))) - (let ((v1-3 gp-0)) - (let ((a0-5 gp-0) - (f0-3 (* (-> obj accel) (-> *display* time-adjust-ratio))) - ) - (.lvf vf1 (&-> a0-5 quad)) - (let ((a0-6 f0-3)) - (.mov vf2 a0-6) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-3 quad) vf1) - ) - (vector+! (-> obj vel) (-> obj vel) gp-0) - (let ((f0-4 (vector-length (-> obj vel))) - (f1-2 (fmin f30-1 (-> obj max-vel))) - ) - (when (< f1-2 f0-4) - (let ((v1-6 (-> obj vel))) - (let ((a0-9 (-> obj vel)) - (f0-5 (/ f1-2 f0-4)) - ) - (.lvf vf1 (&-> a0-9 quad)) - (let ((a0-10 f0-5)) - (.mov vf2 a0-10) + ) + (let ((f30-1 (* (-> obj max-partial) (vector-length gp-0)))) + (vector-float*! + gp-0 + gp-0 + (* (-> obj accel) (-> *display* time-adjust-ratio)) + ) + (vector+! (-> obj vel) (-> obj vel) gp-0) + (let ((f0-4 (vector-length (-> obj vel))) + (f1-2 (fmin f30-1 (-> obj max-vel))) ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-6 quad) vf1) - ) - ) + (if (< f1-2 f0-4) + (vector-float*! (-> obj vel) (-> obj vel) (/ f1-2 f0-4)) ) ) - (let ((v1-7 gp-0)) - (let ((a0-11 (-> obj vel)) - (f0-6 (-> *display* time-adjust-ratio)) - ) - (.lvf vf1 (&-> a0-11 quad)) - (let ((a0-12 f0-6)) - (.mov vf2 a0-12) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (vector+! (-> obj value) (-> obj value) gp-0) ) - (let ((v0-2 0)) - ) - (none) + (vector-float*! gp-0 (-> obj vel) (-> *display* time-adjust-ratio)) + (vector+! (-> obj value) (-> obj value) gp-0) ) + 0 + (none) ) ;; definition of type cam-rotation-tracker @@ -790,5 +744,4 @@ ) ;; failed to figure out what this is: -(let ((v0-28 0)) - ) +0 diff --git a/test/decompiler/reference/engine/camera/math-camera-h_REF.gc b/test/decompiler/reference/engine/camera/math-camera-h_REF.gc index 9d5b85e8e0..51eeadfaec 100644 --- a/test/decompiler/reference/engine/camera/math-camera-h_REF.gc +++ b/test/decompiler/reference/engine/camera/math-camera-h_REF.gc @@ -192,5 +192,4 @@ ) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/camera/math-camera_REF.gc b/test/decompiler/reference/engine/camera/math-camera_REF.gc index 81c188c71e..023baf301b 100644 --- a/test/decompiler/reference/engine/camera/math-camera_REF.gc +++ b/test/decompiler/reference/engine/camera/math-camera_REF.gc @@ -50,12 +50,7 @@ (y-rat (-> math-cam y-ratio)) (cull-info (-> math-cam cull-info)) ) - (let - ((unused-x-thing - (/ (+ 1.0 (* (* 4.0 x-rat) x-rat)) (+ 1.0 (* x-rat x-rat))) - ) - ) - ) + (/ (+ 1.0 (* (* 4.0 x-rat) x-rat)) (+ 1.0 (* x-rat x-rat))) (let ((y-thing (/ (+ 1.0 (* (* 4.0 y-rat) y-rat)) (+ 1.0 (* y-rat y-rat))))) (set! (-> cull-info x-fact) @@ -149,8 +144,7 @@ (let ((fog-constant-1 100.0) (fog-constant-2 16760631.0) ) - (let ((f0-21 16777115.0)) - ) + 16777115.0 (let ((fog-at-near-plane (/ @@ -275,12 +269,9 @@ ) ) ) - (let ((v1-17 0)) - ) - (let ((v1-20 (make-u128 0 (shl #x301ec000 32)))) - ) - (let ((v1-23 (make-u128 0 (shl #x303ec000 32)))) - ) + 0 + (make-u128 0 (shl #x301ec000 32)) + (make-u128 0 (shl #x303ec000 32)) (let ((pfog (-> math-cam pfog0))) (let ((vis-gif-0 (-> math-cam vis-gifs))) (set! (-> vis-gif-0 0 fog0) (the-as uint pfog)) @@ -478,8 +469,7 @@ (vf31 :class vf) ) (init-vf0-vector) - (let ((v1-0 0)) - ) + 0 (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) (.lvf vf25 (&-> *math-camera* camera-temp vector 1 quad)) (.lvf vf26 (&-> *math-camera* camera-temp vector 2 quad)) @@ -526,8 +516,7 @@ (vf31 :class vf) ) (init-vf0-vector) - (let ((v1-0 0)) - ) + 0 (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) (.lvf vf25 (&-> *math-camera* camera-temp vector 1 quad)) (.lvf vf26 (&-> *math-camera* camera-temp vector 2 quad)) @@ -574,8 +563,7 @@ (vf31 :class vf) ) (init-vf0-vector) - (let ((v1-0 0)) - ) + 0 (.lvf vf24 (&-> *math-camera* camera-temp vector 0 quad)) (.lvf vf25 (&-> *math-camera* camera-temp vector 1 quad)) (.lvf vf26 (&-> *math-camera* camera-temp vector 2 quad)) @@ -598,8 +586,7 @@ (.add.vf vf28 vf28 vf30) (.max.x.vf vf28 vf28 vf0 :mask #b1000) (.svf (&-> arg0 quad) vf28) - (let ((a0-2 (zero? (logand v1-7 63)))) - ) + (zero? (logand v1-7 63)) (.mov v0-0 vf23) v0-0 ) diff --git a/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc b/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc index 38612b11fa..f0fa9a574d 100644 --- a/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc +++ b/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc @@ -47,5 +47,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc b/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc index cafa36fbf9..4529f33ef3 100644 --- a/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc @@ -104,5 +104,4 @@ ) ;; failed to figure out what this is: -(let ((v0-9 0)) - ) +0 diff --git a/test/decompiler/reference/engine/collide/collide-frag_REF.gc b/test/decompiler/reference/engine/collide/collide-frag_REF.gc index 6510371d00..12cdb3891b 100644 --- a/test/decompiler/reference/engine/collide/collide-frag_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-frag_REF.gc @@ -37,8 +37,7 @@ drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 int)) (dummy-11 (-> obj data 0) (-> obj length)) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -49,8 +48,7 @@ drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 int)) (dummy-12 (-> obj data 0) (-> obj length)) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -61,8 +59,7 @@ drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 int)) (dummy-13 (-> obj data 0) (-> obj length)) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -162,8 +159,7 @@ drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 int)) (dummy-11 (the-as collide-fragment (-> obj data)) (-> obj length)) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -174,8 +170,7 @@ drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 int)) (dummy-12 (the-as collide-fragment (-> obj data)) (-> obj length)) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -186,8 +181,7 @@ drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 int)) (dummy-13 (the-as collide-fragment (-> obj data)) (-> obj length)) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -214,7 +208,3 @@ ) obj ) - - - - diff --git a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc index bcdd28957c..3374682df8 100644 --- a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc @@ -108,8 +108,7 @@ (let ((t9-0 (method-of-type structure new)) (v1-1 type-to-make) ) - (let ((a2-0 (-> type-to-make size))) - ) + (-> type-to-make size) (let ((gp-0 (t9-0 allocation v1-1))) ((method-of-type touching-prims-entry-pool init-list!) (the-as touching-prims-entry-pool gp-0) @@ -187,8 +186,7 @@ (let ((t9-0 (method-of-type structure new)) (v1-1 type-to-make) ) - (let ((a2-0 (-> type-to-make size))) - ) + (-> type-to-make size) (let ((obj (the-as touching-list (t9-0 allocation v1-1)))) (set! (-> obj num-touching-shapes) 0) (set! (-> obj resolve-u) 0) diff --git a/test/decompiler/reference/engine/data/art-h_REF.gc b/test/decompiler/reference/engine/data/art-h_REF.gc index ec9558f085..8b9a8ec896 100644 --- a/test/decompiler/reference/engine/data/art-h_REF.gc +++ b/test/decompiler/reference/engine/data/art-h_REF.gc @@ -509,5 +509,4 @@ ) ;; failed to figure out what this is: -(let ((v0-37 0)) - ) +0 diff --git a/test/decompiler/reference/engine/data/res-h_REF.gc b/test/decompiler/reference/engine/data/res-h_REF.gc index 91f14911e7..12f4d2e4b1 100644 --- a/test/decompiler/reference/engine/data/res-h_REF.gc +++ b/test/decompiler/reference/engine/data/res-h_REF.gc @@ -63,5 +63,4 @@ (define *res-key-string* (new 'global 'string 64 (the-as string #f))) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/debug/assert-h_REF.gc b/test/decompiler/reference/engine/debug/assert-h_REF.gc index f42d1ede77..6f56e55f44 100644 --- a/test/decompiler/reference/engine/debug/assert-h_REF.gc +++ b/test/decompiler/reference/engine/debug/assert-h_REF.gc @@ -62,5 +62,4 @@ (define *__private-assert-info* (new 'static '__assert-info-private-struct)) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/debug/debug-h_REF.gc b/test/decompiler/reference/engine/debug/debug-h_REF.gc index 76fff43780..2f88ebf06b 100644 --- a/test/decompiler/reference/engine/debug/debug-h_REF.gc +++ b/test/decompiler/reference/engine/debug/debug-h_REF.gc @@ -66,5 +66,4 @@ ) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/debug/debug-sphere_REF.gc b/test/decompiler/reference/engine/debug/debug-sphere_REF.gc index 8e0b909590..af8c199c63 100644 --- a/test/decompiler/reference/engine/debug/debug-sphere_REF.gc +++ b/test/decompiler/reference/engine/debug/debug-sphere_REF.gc @@ -83,8 +83,7 @@ ) ) ) - (let ((v0-10 0)) - ) + 0 (none) ) @@ -131,8 +130,7 @@ (add-debug-line #t arg0 s4-0 s2-0 arg3 #f (the-as rgba -1)) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) ) diff --git a/test/decompiler/reference/engine/debug/stats-h_REF.gc b/test/decompiler/reference/engine/debug/stats-h_REF.gc index b56f97b1ef..37df742eaa 100644 --- a/test/decompiler/reference/engine/debug/stats-h_REF.gc +++ b/test/decompiler/reference/engine/debug/stats-h_REF.gc @@ -129,8 +129,7 @@ (set! (-> obj to-spr-waits) (+ (-> obj to-spr-waits) arg1)) (set! (-> obj from-spr-waits) (+ (-> obj from-spr-waits) arg2)) ) - (let ((v0-0 0)) - ) + 0 (none) ) diff --git a/test/decompiler/reference/engine/dma/dma-bucket_REF.gc b/test/decompiler/reference/engine/dma/dma-bucket_REF.gc index 9354244bb0..56bb0edc41 100644 --- a/test/decompiler/reference/engine/dma/dma-bucket_REF.gc +++ b/test/decompiler/reference/engine/dma/dma-bucket_REF.gc @@ -50,5 +50,4 @@ ) ;; failed to figure out what this is: -(let ((v0-0 0)) - ) +0 diff --git a/test/decompiler/reference/engine/dma/dma-buffer_REF.gc b/test/decompiler/reference/engine/dma/dma-buffer_REF.gc index 54831ab2fb..7f1712e07e 100644 --- a/test/decompiler/reference/engine/dma/dma-buffer_REF.gc +++ b/test/decompiler/reference/engine/dma/dma-buffer_REF.gc @@ -182,8 +182,7 @@ (&- (-> arg1 base) (the-as uint (-> arg1 data))) ) (crash!) - (let ((v1-2 0)) - ) + 0 ) (dma-send arg0 @@ -201,8 +200,7 @@ (&- (-> arg1 base) (the-as uint (-> arg1 data))) ) (crash!) - (let ((v1-2 0)) - ) + 0 ) (dma-send-chain arg0 (the-as uint (-> arg1 data))) (none) diff --git a/test/decompiler/reference/engine/dma/dma-disasm_REF.gc b/test/decompiler/reference/engine/dma/dma-disasm_REF.gc index 034e8e3adc..29513e9705 100644 --- a/test/decompiler/reference/engine/dma/dma-disasm_REF.gc +++ b/test/decompiler/reference/engine/dma/dma-disasm_REF.gc @@ -285,10 +285,8 @@ (+ (+ s2-1 4) (the-as int data)) count ) - (let ((v1-21 (-> s3-1 (* 3 s2-1)))) - ) - (let ((v1-26 (-> s3-1 (+ (* 3 s2-1) 1)))) - ) + (-> s3-1 (* 3 s2-1)) + (-> s3-1 (+ (* 3 s2-1) 1)) ) ) ) @@ -402,172 +400,158 @@ ) (-> *vif-disasm-table* cmd-template-idx tag) ) - (let* ((print-kind (-> *vif-disasm-table* cmd-template-idx print)) - (v0-1 (cond - ((zero? print-kind) - (format - stream - " (~s :irq ~D)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - ) - ) - ((= print-kind 1) - (format - stream - " (~s :irq ~D :~s #x~X)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> *vif-disasm-table* cmd-template-idx string2) - (-> first-tag imm) - ) - ) - ((= print-kind 2) - (let - ((stcycl-imm (the-as vif-stcycl-imm (-> first-tag imm))) - ) - (format - stream - " (~s :irq ~D :wl ~D :cl ~D)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> stcycl-imm wl) - (-> stcycl-imm cl) - ) - ) - ) - ((= print-kind 3) - (set! packet-size 8) - (format - stream - " (~s :irq ~D :~s #x~X)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> *vif-disasm-table* cmd-template-idx string2) - (-> data 1) - ) - ) - ((= print-kind 4) - (set! packet-size 20) - (format - stream - " (~s :irq ~D :~s " - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> *vif-disasm-table* cmd-template-idx string2) - ) - (format - stream - "#x~X #x~X #x~X #x~X)~%" - (-> data 1) - (-> data 2) - (-> data 3) - (-> data 4) - ) - ) - ((= print-kind 5) - (format - stream - " (~s :irq ~D :instructions #x~D :addr #x~X)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> first-tag num) - (-> first-tag imm) - ) - ) - ((= print-kind 6) - (if (-> first-tag imm) - (set! packet-size #x100000) - (set! - packet-size - (the-as int (* (-> first-tag imm) 16)) - ) - ) - (format - stream - " (~s :irq ~D :qwc #x~D)~%" - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> first-tag imm) - ) - (set! data-ptr (&-> data 1)) - (set! data-idx 0) - (while (< data-idx (the-as int (-> first-tag imm))) - (format - stream - " #x~X: #x~8x #x~8x #x~8x #x~8x~%" - (+ (+ (* data-idx 16) 4) (the-as int data)) - (-> data-ptr (* data-idx 4)) - (-> data-ptr (+ (* data-idx 4) 1)) - (-> data-ptr (+ (* data-idx 4) 2)) - (-> data-ptr (+ (* data-idx 4) 3)) - ) - (set! data-idx (+ data-idx 1)) - ) - #f - ) - ((= print-kind 7) - (set! - packet-size - (the-as - int - (+ - (logand - -4 - (the-as - int - (+ - (* - (-> *vif-disasm-table* cmd-template-idx val) - (-> first-tag num) - ) - 3 - ) - ) - ) - 4 - ) - ) - ) - (set! - unpack-imm - (the-as vif-unpack-imm (-> first-tag imm)) - ) - (format - stream - " (~s :irq ~D :num ~D :addr #x~X " - (-> *vif-disasm-table* cmd-template-idx string1) - (-> first-tag irq) - (-> first-tag num) - (-> unpack-imm addr) - ) - (format - stream - ":msk ~D :flg ~D :usn ~D [skip ~d])~%" - (-> first-tag msk) - (-> unpack-imm flg) - (-> unpack-imm usn) - (the-as uint packet-size) - ) - (if details - (disasm-vif-details - stream - (the-as (pointer uint8) data) - (logand cmd (vif-cmd cmd-mask)) - (the-as int (-> first-tag num)) - ) - ) - ) - ((= print-kind 8) - (format - stream - " (*unknown* vif-tag #x~X)~%" - (-> first-tag cmd) - ) - ) - ) + (let ((print-kind (-> *vif-disasm-table* cmd-template-idx print))) + (cond + ((zero? print-kind) + (format + stream + " (~s :irq ~D)~%" + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + ) + ) + ((= print-kind 1) + (format + stream + " (~s :irq ~D :~s #x~X)~%" + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> *vif-disasm-table* cmd-template-idx string2) + (-> first-tag imm) + ) + ) + ((= print-kind 2) + (let ((stcycl-imm (the-as vif-stcycl-imm (-> first-tag imm)))) + (format + stream + " (~s :irq ~D :wl ~D :cl ~D)~%" + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> stcycl-imm wl) + (-> stcycl-imm cl) + ) + ) + ) + ((= print-kind 3) + (set! packet-size 8) + (format + stream + " (~s :irq ~D :~s #x~X)~%" + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> *vif-disasm-table* cmd-template-idx string2) + (-> data 1) + ) + ) + ((= print-kind 4) + (set! packet-size 20) + (format + stream + " (~s :irq ~D :~s " + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> *vif-disasm-table* cmd-template-idx string2) + ) + (format + stream + "#x~X #x~X #x~X #x~X)~%" + (-> data 1) + (-> data 2) + (-> data 3) + (-> data 4) + ) + ) + ((= print-kind 5) + (format + stream + " (~s :irq ~D :instructions #x~D :addr #x~X)~%" + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> first-tag num) + (-> first-tag imm) + ) + ) + ((= print-kind 6) + (if (-> first-tag imm) + (set! packet-size #x100000) + (set! packet-size (the-as int (* (-> first-tag imm) 16))) + ) + (format + stream + " (~s :irq ~D :qwc #x~D)~%" + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> first-tag imm) + ) + (set! data-ptr (&-> data 1)) + (set! data-idx 0) + (while (< data-idx (the-as int (-> first-tag imm))) + (format + stream + " #x~X: #x~8x #x~8x #x~8x #x~8x~%" + (+ (+ (* data-idx 16) 4) (the-as int data)) + (-> data-ptr (* data-idx 4)) + (-> data-ptr (+ (* data-idx 4) 1)) + (-> data-ptr (+ (* data-idx 4) 2)) + (-> data-ptr (+ (* data-idx 4) 3)) + ) + (set! data-idx (+ data-idx 1)) + ) + #f + ) + ((= print-kind 7) + (set! + packet-size + (the-as + int + (+ + (logand + -4 + (the-as + int + (+ + (* + (-> *vif-disasm-table* cmd-template-idx val) + (-> first-tag num) + ) + 3 + ) ) ) + 4 + ) + ) + ) + (set! unpack-imm (the-as vif-unpack-imm (-> first-tag imm))) + (format + stream + " (~s :irq ~D :num ~D :addr #x~X " + (-> *vif-disasm-table* cmd-template-idx string1) + (-> first-tag irq) + (-> first-tag num) + (-> unpack-imm addr) + ) + (format + stream + ":msk ~D :flg ~D :usn ~D [skip ~d])~%" + (-> first-tag msk) + (-> unpack-imm flg) + (-> unpack-imm usn) + (the-as uint packet-size) + ) + (if details + (disasm-vif-details + stream + (the-as (pointer uint8) data) + (logand cmd (vif-cmd cmd-mask)) + (the-as int (-> first-tag num)) + ) + ) + ) + ((= print-kind 8) + (format stream " (*unknown* vif-tag #x~X)~%" (-> first-tag cmd)) + ) + ) ) (set! cmd-template-idx (-> *vif-disasm-table* length)) ) @@ -777,8 +761,7 @@ (+ (the-as uint data-2) (the-as uint (* (+ qwc 1) 16))) ) ) - (let ((v1-68 data-2)) - ) + data-2 ) ((= (-> current-tag id) (dma-tag-id next)) (set! addr (&-> (the-as (pointer uint64) data-2) 2)) @@ -799,8 +782,7 @@ (set! end-condition 'error) ) (set! data-2 (the-as dma-packet (-> current-tag addr))) - (let ((v1-88 data-2)) - ) + data-2 ) (else (cond @@ -823,13 +805,11 @@ (cond ((zero? call-depth) (set! ra-1 (&+ addr qwc)) - (let ((v1-108 (the-as (pointer uint64) ra-1))) - ) + (the-as (pointer uint64) ra-1) ) (else (set! ra-2 (&+ addr qwc)) - (let ((v1-111 (the-as (pointer uint64) ra-2))) - ) + (the-as (pointer uint64) ra-2) ) ) ) @@ -851,13 +831,11 @@ (cond ((zero? v1-123) (set! data-2 (the-as dma-packet ra-1)) - (let ((v1-125 data-2)) - ) + data-2 ) ((= v1-123 1) (set! data-2 (the-as dma-packet ra-2)) - (let ((v1-127 data-2)) - ) + data-2 ) (else (set! end-condition #t) @@ -865,26 +843,22 @@ ) ) (set! call-depth (+ call-depth -1)) - (let ((v1-131 call-depth)) - ) + call-depth ) ((= (-> current-tag id) (dma-tag-id end)) (set! addr (&-> (the-as (pointer uint64) data-2) 2)) (set! qwc (the-as int (-> current-tag qwc))) (set! end-condition #t) - (let ((v0-17 (if mode-2 - (disasm-vif-tag - (the-as - (pointer vif-tag) - (&-> (the-as (pointer uint64) data-2) 1) - ) - (the-as int (+ (* qwc 4) 2)) - stream-2 - (= mode-2 'details) - ) - ) - ) - ) + (if mode-2 + (disasm-vif-tag + (the-as + (pointer vif-tag) + (&-> (the-as (pointer uint64) data-2) 1) + ) + (the-as int (+ (* qwc 4) 2)) + stream-2 + (= mode-2 'details) + ) ) ) (else diff --git a/test/decompiler/reference/engine/dma/dma_REF.gc b/test/decompiler/reference/engine/dma/dma_REF.gc index 949f5a3c16..2aee82d588 100644 --- a/test/decompiler/reference/engine/dma/dma_REF.gc +++ b/test/decompiler/reference/engine/dma/dma_REF.gc @@ -12,8 +12,7 @@ (cond ((zero? v1-0) (crash!) - (let ((a1-0 0)) - ) + 0 ) (else (+! v1-0 -1) @@ -21,8 +20,7 @@ ) ) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -50,8 +48,7 @@ (.sync.l) (set! (-> arg0 chcr) (new 'static 'dma-chcr :str #x1)) (.sync.l) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -82,8 +79,7 @@ (new 'static 'dma-chcr :dir #x1 :mod #x1 :tte #x1 :str #x1) ) (.sync.l) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -111,8 +107,7 @@ (.sync.l) (set! (-> arg0 chcr) (new 'static 'dma-chcr :dir #x1 :mod #x1 :str #x1)) (.sync.l) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -142,8 +137,7 @@ (new 'static 'dma-chcr :dir #x1 :mod #x1 :tte #x1 :str #x1) ) (.sync.l) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -167,8 +161,7 @@ (dma-sync (the-as pointer s5-0) 0 0) ) ) - (let ((v0-3 0)) - ) + 0 (none) ) @@ -193,8 +186,7 @@ (dma-sync (the-as pointer s5-0) 0 0) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -218,8 +210,7 @@ (dma-sync (the-as pointer s5-0) 0 0) ) ) - (let ((v0-3 0)) - ) + 0 (none) ) @@ -244,8 +235,7 @@ (dma-sync (the-as pointer s5-0) 0 0) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -254,8 +244,7 @@ (defun dma-initialize () (set! (-> (the-as vif-bank #x10003800) err me0) 1) (set! (-> (the-as vif-bank #x10003c00) err me0) 1) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -267,8 +256,7 @@ (set! (-> v1-0 a0-0) (the-as uint #xabadbeef)) ) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -280,8 +268,7 @@ (set! (-> v1-0 a0-0) (the-as uint #xabadbeef)) ) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -351,8 +338,7 @@ (reset-path) (reset-graph 1 1 *video-reset-parm* 1) (format 0 "gkernel: vif1 path reset!~%") - (let ((v0-5 0)) - ) + 0 (none) ) @@ -397,8 +383,7 @@ ) ) ) - (let ((v0-5 0)) - ) + 0 (none) ) diff --git a/test/decompiler/reference/engine/draw/draw-node-h_REF.gc b/test/decompiler/reference/engine/draw/draw-node-h_REF.gc index af1328fbd9..178cfec5ba 100644 --- a/test/decompiler/reference/engine/draw/draw-node-h_REF.gc +++ b/test/decompiler/reference/engine/draw/draw-node-h_REF.gc @@ -46,5 +46,4 @@ ) ;; failed to figure out what this is: -(let ((v0-5 0)) - ) +0 diff --git a/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc index 0a6265cd67..b7075ac88f 100644 --- a/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-ambient-h_REF.gc @@ -114,5 +114,4 @@ ) ;; failed to figure out what this is: -(let ((v0-10 0)) - ) +0 diff --git a/test/decompiler/reference/engine/draw/drawable-group-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-group-h_REF.gc index d2925e2b72..b32f36c19a 100644 --- a/test/decompiler/reference/engine/draw/drawable-group-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-group-h_REF.gc @@ -15,5 +15,4 @@ (define *collide-nodes* 0) ;; failed to figure out what this is: -(let ((v0-1 0)) - ) +0 diff --git a/test/decompiler/reference/engine/draw/drawable-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-h_REF.gc index d15ac7a8b8..ae01d1e479 100644 --- a/test/decompiler/reference/engine/draw/drawable-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-h_REF.gc @@ -49,5 +49,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/draw/drawable-inline-array-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-inline-array-h_REF.gc index f1f80cba66..7c9091db3a 100644 --- a/test/decompiler/reference/engine/draw/drawable-inline-array-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-inline-array-h_REF.gc @@ -20,5 +20,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/draw/drawable-tree-h_REF.gc b/test/decompiler/reference/engine/draw/drawable-tree-h_REF.gc index bdbf60b133..36493a98e0 100644 --- a/test/decompiler/reference/engine/draw/drawable-tree-h_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable-tree-h_REF.gc @@ -18,6 +18,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) - +0 diff --git a/test/decompiler/reference/engine/draw/process-drawable-h_REF.gc b/test/decompiler/reference/engine/draw/process-drawable-h_REF.gc index 6da3801221..c6e3b3df53 100644 --- a/test/decompiler/reference/engine/draw/process-drawable-h_REF.gc +++ b/test/decompiler/reference/engine/draw/process-drawable-h_REF.gc @@ -155,5 +155,4 @@ ) ;; failed to figure out what this is: -(let ((v0-0 0)) - ) +0 diff --git a/test/decompiler/reference/engine/entity/actor-link-h_REF.gc b/test/decompiler/reference/engine/entity/actor-link-h_REF.gc index 7478df1088..5e7cbccf43 100644 --- a/test/decompiler/reference/engine/entity/actor-link-h_REF.gc +++ b/test/decompiler/reference/engine/entity/actor-link-h_REF.gc @@ -267,8 +267,7 @@ ) ) ) - (let ((v0-1 0)) - ) + 0 (none) ) ) @@ -290,8 +289,7 @@ ) ) ) - (let ((v0-1 0)) - ) + 0 (none) ) ) diff --git a/test/decompiler/reference/engine/entity/entity-h_REF.gc b/test/decompiler/reference/engine/entity/entity-h_REF.gc index d0b3bbcaf6..1f1d667826 100644 --- a/test/decompiler/reference/engine/entity/entity-h_REF.gc +++ b/test/decompiler/reference/engine/entity/entity-h_REF.gc @@ -310,5 +310,4 @@ ) ;; failed to figure out what this is: -(let ((v0-20 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/effect-control-h_REF.gc b/test/decompiler/reference/engine/game/effect-control-h_REF.gc index 024d4a4015..3a1f0fcbe0 100644 --- a/test/decompiler/reference/engine/game/effect-control-h_REF.gc +++ b/test/decompiler/reference/engine/game/effect-control-h_REF.gc @@ -75,11 +75,9 @@ ;; INFO: Return type mismatch int vs none. (defmethod set-channel-offset! effect-control ((obj effect-control) (arg0 int)) (set! (-> obj channel-offset) arg0) - (let ((v0-0 0)) - ) + 0 (none) ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/game-h_REF.gc b/test/decompiler/reference/engine/game/game-h_REF.gc index 98ba31a442..77f7edf8cb 100644 --- a/test/decompiler/reference/engine/game/game-h_REF.gc +++ b/test/decompiler/reference/engine/game/game-h_REF.gc @@ -189,5 +189,4 @@ ) ;; failed to figure out what this is: -(let ((v0-8 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/generic-obs-h_REF.gc b/test/decompiler/reference/engine/game/generic-obs-h_REF.gc index 8637134df8..f78e3d5a96 100644 --- a/test/decompiler/reference/engine/game/generic-obs-h_REF.gc +++ b/test/decompiler/reference/engine/game/generic-obs-h_REF.gc @@ -348,5 +348,4 @@ ) ;; failed to figure out what this is: -(let ((v0-18 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/main-h_REF.gc b/test/decompiler/reference/engine/game/main-h_REF.gc index 3f248801dd..249495aa12 100644 --- a/test/decompiler/reference/engine/game/main-h_REF.gc +++ b/test/decompiler/reference/engine/game/main-h_REF.gc @@ -326,5 +326,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/projectiles-h_REF.gc b/test/decompiler/reference/engine/game/projectiles-h_REF.gc index d3b8048446..af7ee300e7 100644 --- a/test/decompiler/reference/engine/game/projectiles-h_REF.gc +++ b/test/decompiler/reference/engine/game/projectiles-h_REF.gc @@ -116,5 +116,4 @@ ) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/settings-h_REF.gc b/test/decompiler/reference/engine/game/settings-h_REF.gc index bb165056b8..a92482913e 100644 --- a/test/decompiler/reference/engine/game/settings-h_REF.gc +++ b/test/decompiler/reference/engine/game/settings-h_REF.gc @@ -218,5 +218,4 @@ ) ;; failed to figure out what this is: -(let ((v0-7 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/task/game-task-h_REF.gc b/test/decompiler/reference/engine/game/task/game-task-h_REF.gc index d92736d4cf..096752c8a2 100644 --- a/test/decompiler/reference/engine/game/task/game-task-h_REF.gc +++ b/test/decompiler/reference/engine/game/task/game-task-h_REF.gc @@ -2,5 +2,4 @@ (in-package goal) ;; failed to figure out what this is: -(let ((v0-0 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/task/hint-control-h_REF.gc b/test/decompiler/reference/engine/game/task/hint-control-h_REF.gc index 2438678b63..1b3e0378d4 100644 --- a/test/decompiler/reference/engine/game/task/hint-control-h_REF.gc +++ b/test/decompiler/reference/engine/game/task/hint-control-h_REF.gc @@ -74,5 +74,4 @@ ) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/task/task-control-h_REF.gc b/test/decompiler/reference/engine/game/task/task-control-h_REF.gc index 4bd083bc9d..2011e01c73 100644 --- a/test/decompiler/reference/engine/game/task/task-control-h_REF.gc +++ b/test/decompiler/reference/engine/game/task/task-control-h_REF.gc @@ -194,5 +194,4 @@ ) ;; failed to figure out what this is: -(let ((v0-8 0)) - ) +0 diff --git a/test/decompiler/reference/engine/game/video_REF.gc b/test/decompiler/reference/engine/game/video_REF.gc index 97ef7d18ae..e93bd5ae72 100644 --- a/test/decompiler/reference/engine/game/video_REF.gc +++ b/test/decompiler/reference/engine/game/video_REF.gc @@ -58,8 +58,7 @@ (if *progress-process* (TODO-RENAME-23 (-> *progress-process* 0) (get-aspect-ratio) arg0) ) - (let ((v0-5 0)) - ) + 0 (none) ) @@ -91,8 +90,7 @@ (if *progress-process* (TODO-RENAME-23 (-> *progress-process* 0) arg0 (get-video-mode)) ) - (let ((v0-4 0)) - ) + 0 (none) ) diff --git a/test/decompiler/reference/engine/geometry/bounding-box-h_REF.gc b/test/decompiler/reference/engine/geometry/bounding-box-h_REF.gc index 46aca0f3a0..3d34532e5c 100644 --- a/test/decompiler/reference/engine/geometry/bounding-box-h_REF.gc +++ b/test/decompiler/reference/engine/geometry/bounding-box-h_REF.gc @@ -65,5 +65,4 @@ ) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/geometry/geometry-h_REF.gc b/test/decompiler/reference/engine/geometry/geometry-h_REF.gc index c1a9106ec8..9bf4dc4472 100644 --- a/test/decompiler/reference/engine/geometry/geometry-h_REF.gc +++ b/test/decompiler/reference/engine/geometry/geometry-h_REF.gc @@ -54,5 +54,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/geometry/vol-h_REF.gc b/test/decompiler/reference/engine/geometry/vol-h_REF.gc index c17d34e827..9a5d9f9d93 100644 --- a/test/decompiler/reference/engine/geometry/vol-h_REF.gc +++ b/test/decompiler/reference/engine/geometry/vol-h_REF.gc @@ -117,8 +117,7 @@ (let ((s3-0 s4-0) (s2-0 (-> (the-as res-lump s5-1) tag s4-0)) ) - (let ((v1-10 0)) - ) + 0 (while (= (-> s2-0 name) (-> (the-as res-lump s5-1) tag s4-0 name)) (let ((v1-12 @@ -167,8 +166,7 @@ (let ((s3-1 s4-1) (s2-1 (-> (the-as res-lump s5-2) tag s4-1)) ) - (let ((v1-29 0)) - ) + 0 (while (= (-> s2-1 name) (-> (the-as res-lump s5-2) tag s4-1 name)) (let ((v1-31 diff --git a/test/decompiler/reference/engine/gfx/background-h_REF.gc b/test/decompiler/reference/engine/gfx/background-h_REF.gc index 8801aada21..29967a724b 100644 --- a/test/decompiler/reference/engine/gfx/background-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/background-h_REF.gc @@ -80,5 +80,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/decomp-h_REF.gc b/test/decompiler/reference/engine/gfx/decomp-h_REF.gc index fd67c659bd..f8e4f8c56e 100644 --- a/test/decompiler/reference/engine/gfx/decomp-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/decomp-h_REF.gc @@ -24,5 +24,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/depth-cue-h_REF.gc b/test/decompiler/reference/engine/gfx/depth-cue-h_REF.gc index 7b08f2beb0..8c0639dcbb 100644 --- a/test/decompiler/reference/engine/gfx/depth-cue-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/depth-cue-h_REF.gc @@ -64,5 +64,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/eye-h_REF.gc b/test/decompiler/reference/engine/gfx/eye-h_REF.gc index 4d55907280..49beb2095d 100644 --- a/test/decompiler/reference/engine/gfx/eye-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/eye-h_REF.gc @@ -107,5 +107,4 @@ ) ;; failed to figure out what this is: -(let ((v0-8 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/font-h_REF.gc b/test/decompiler/reference/engine/gfx/font-h_REF.gc index c6ed04b0fa..1956e0b5af 100644 --- a/test/decompiler/reference/engine/gfx/font-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/font-h_REF.gc @@ -775,5 +775,4 @@ ) ;; failed to figure out what this is: -(let ((v0-20 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc b/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc index bf7985766a..dd830bbd0c 100644 --- a/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/generic/generic-vu1-h_REF.gc @@ -80,5 +80,4 @@ ) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/generic/generic-work-h_REF.gc b/test/decompiler/reference/engine/gfx/generic/generic-work-h_REF.gc index 73b12255e8..50d8937685 100644 --- a/test/decompiler/reference/engine/gfx/generic/generic-work-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/generic/generic-work-h_REF.gc @@ -185,5 +185,4 @@ (define *generic-debug* (new 'global 'generic-debug)) ;; failed to figure out what this is: -(let ((v0-17 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/hw/display-h_REF.gc b/test/decompiler/reference/engine/gfx/hw/display-h_REF.gc index 2a4e8b6af5..87a777de20 100644 --- a/test/decompiler/reference/engine/gfx/hw/display-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/hw/display-h_REF.gc @@ -345,5 +345,4 @@ (define *post-draw-hook* nothing) ;; failed to figure out what this is: -(let ((v0-12 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/hw/display_REF.gc b/test/decompiler/reference/engine/gfx/hw/display_REF.gc index 17de952346..c279a51534 100644 --- a/test/decompiler/reference/engine/gfx/hw/display_REF.gc +++ b/test/decompiler/reference/engine/gfx/hw/display_REF.gc @@ -89,8 +89,7 @@ (cond ((zero? (logand psm 2)) (set! (-> env dthe) (new 'static 'gs-dthe)) - (let ((v1-7 0)) - ) + 0 ) (else (set! (-> env dthe) (new 'static 'gs-dthe :dthe #x1)) @@ -109,8 +108,7 @@ (cond ((zero? ztest) (set! (-> env test1) (new 'static 'gs-test)) - (let ((v1-16 0)) - ) + 0 ) (else (set! (-> env test1) (new 'static 'gs-test :zte #x1 :ztst ztest)) diff --git a/test/decompiler/reference/engine/gfx/hw/video-h_REF.gc b/test/decompiler/reference/engine/gfx/hw/video-h_REF.gc index 41bc093b61..fcadcd4099 100644 --- a/test/decompiler/reference/engine/gfx/hw/video-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/hw/video-h_REF.gc @@ -73,5 +73,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/hw/vu1-user-h_REF.gc b/test/decompiler/reference/engine/gfx/hw/vu1-user-h_REF.gc index 8fd0b75f4d..ecdc0d2b09 100644 --- a/test/decompiler/reference/engine/gfx/hw/vu1-user-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/hw/vu1-user-h_REF.gc @@ -110,5 +110,4 @@ ) ;; failed to figure out what this is: -(let ((v0-8 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/lights-h_REF.gc b/test/decompiler/reference/engine/gfx/lights-h_REF.gc index 570369fd1d..870ed6b7c8 100644 --- a/test/decompiler/reference/engine/gfx/lights-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/lights-h_REF.gc @@ -206,5 +206,4 @@ ) ;; failed to figure out what this is: -(let ((v0-19 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/lights_REF.gc b/test/decompiler/reference/engine/gfx/lights_REF.gc index 4df40af8b8..33018a8ae9 100644 --- a/test/decompiler/reference/engine/gfx/lights_REF.gc +++ b/test/decompiler/reference/engine/gfx/lights_REF.gc @@ -39,8 +39,7 @@ (defun light-group-process! ((arg0 vu-lights) (arg1 light-group) (arg2 vector) (arg3 vector)) - (let ((f0-0 (rotate-y<-vector+vector arg3 arg2))) - ) + (rotate-y<-vector+vector arg3 arg2) (vu-lights<-light-group! arg0 arg1) (none) ) diff --git a/test/decompiler/reference/engine/gfx/merc/generic-merc-h_REF.gc b/test/decompiler/reference/engine/gfx/merc/generic-merc-h_REF.gc index 338174cc3d..3416499f30 100644 --- a/test/decompiler/reference/engine/gfx/merc/generic-merc-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/merc/generic-merc-h_REF.gc @@ -281,5 +281,4 @@ ) ;; failed to figure out what this is: -(let ((v0-18 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/merc/merc-h_REF.gc b/test/decompiler/reference/engine/gfx/merc/merc-h_REF.gc index af79abaa5f..910e50e21a 100644 --- a/test/decompiler/reference/engine/gfx/merc/merc-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/merc/merc-h_REF.gc @@ -718,5 +718,4 @@ ) ;; failed to figure out what this is: -(let ((v0-47 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/mood-h_REF.gc b/test/decompiler/reference/engine/gfx/mood-h_REF.gc index 30bc29f0de..e7224fb136 100644 --- a/test/decompiler/reference/engine/gfx/mood-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/mood-h_REF.gc @@ -258,5 +258,4 @@ ) ;; failed to figure out what this is: -(let ((v0-15 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/ocean/ocean-h_REF.gc b/test/decompiler/reference/engine/gfx/ocean/ocean-h_REF.gc index 58ab9754c8..025ace78f1 100644 --- a/test/decompiler/reference/engine/gfx/ocean/ocean-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/ocean/ocean-h_REF.gc @@ -818,5 +818,4 @@ ) ;; failed to figure out what this is: -(let ((v0-64 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/ripple_REF.gc b/test/decompiler/reference/engine/gfx/ripple_REF.gc index 239082f124..131f285846 100644 --- a/test/decompiler/reference/engine/gfx/ripple_REF.gc +++ b/test/decompiler/reference/engine/gfx/ripple_REF.gc @@ -61,8 +61,7 @@ ) ) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -84,8 +83,7 @@ (set! (-> arg0 frame-save) (-> *display* integral-frame-counter)) ) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -126,8 +124,7 @@ ) ) (set! (-> *ripple-globals* count) 0) - (let ((v0-4 0)) - ) + 0 ) (none) ) diff --git a/test/decompiler/reference/engine/gfx/shadow/shadow-h_REF.gc b/test/decompiler/reference/engine/gfx/shadow/shadow-h_REF.gc index 16bc179ce3..f7e3483f2e 100644 --- a/test/decompiler/reference/engine/gfx/shadow/shadow-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/shadow/shadow-h_REF.gc @@ -60,5 +60,4 @@ (define *fake-shadow-buffer* *fake-shadow-buffer-1*) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc b/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc index a486370870..cad57b7dfc 100644 --- a/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/shrub/shrubbery-h_REF.gc @@ -465,5 +465,4 @@ ) ;; failed to figure out what this is: -(let ((v0-23 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/sky/sky-h_REF.gc b/test/decompiler/reference/engine/gfx/sky/sky-h_REF.gc index 6d5be6c41d..a9ef2b4b7e 100644 --- a/test/decompiler/reference/engine/gfx/sky/sky-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/sky/sky-h_REF.gc @@ -309,5 +309,4 @@ (define *cloud-drawn* #f) ;; failed to figure out what this is: -(let ((v0-27 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc index a241e7eae9..54e30dfcfa 100644 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc @@ -152,5 +152,4 @@ ) ;; failed to figure out what this is: -(let ((v0-7 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc index fcb4fae8ea..f7c4f23cf6 100644 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc @@ -215,5 +215,4 @@ (set! (-> sparticle-launch-control heap-base) (the-as uint 32)) ;; failed to figure out what this is: -(let ((v0-12 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/sprite/sprite-h_REF.gc b/test/decompiler/reference/engine/gfx/sprite/sprite-h_REF.gc index f9ab53359c..0741c859e7 100644 --- a/test/decompiler/reference/engine/gfx/sprite/sprite-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/sprite/sprite-h_REF.gc @@ -158,5 +158,4 @@ ) ;; failed to figure out what this is: -(let ((v0-8 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/texture-h_REF.gc b/test/decompiler/reference/engine/gfx/texture-h_REF.gc index a1d33f55f0..5e82bc5042 100644 --- a/test/decompiler/reference/engine/gfx/texture-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/texture-h_REF.gc @@ -403,5 +403,4 @@ (define *ocean-base-page* 0) ;; failed to figure out what this is: -(let ((v0-25 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc b/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc index 3d20ded7c5..7921342958 100644 --- a/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tfrag/subdivide-h_REF.gc @@ -397,5 +397,4 @@ (define *collide-stats* (new 'global 'collide-stats)) ;; failed to figure out what this is: -(let ((v0-33 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/tfrag/tfrag-h_REF.gc b/test/decompiler/reference/engine/gfx/tfrag/tfrag-h_REF.gc index 5e6962984d..806dacfed0 100644 --- a/test/decompiler/reference/engine/gfx/tfrag/tfrag-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tfrag/tfrag-h_REF.gc @@ -476,5 +476,4 @@ ) ;; failed to figure out what this is: -(let ((v0-30 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/tie/generic-tie-h_REF.gc b/test/decompiler/reference/engine/gfx/tie/generic-tie-h_REF.gc index 849dbb6bbd..6e236d1177 100644 --- a/test/decompiler/reference/engine/gfx/tie/generic-tie-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tie/generic-tie-h_REF.gc @@ -464,5 +464,4 @@ ) ;; failed to figure out what this is: -(let ((v0-30 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc b/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc index 697322c158..fd8142e210 100644 --- a/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tie/prototype-h_REF.gc @@ -265,5 +265,4 @@ ) ;; failed to figure out what this is: -(let ((v0-16 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc b/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc index 240b8388b9..05765425be 100644 --- a/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/tie/tie-h_REF.gc @@ -422,5 +422,4 @@ (define *instance-tie-work-copy* (the-as basic #f)) ;; failed to figure out what this is: -(let ((v0-18 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/time-of-day-h_REF.gc b/test/decompiler/reference/engine/gfx/time-of-day-h_REF.gc index 32eb5669d0..5d704bb5c9 100644 --- a/test/decompiler/reference/engine/gfx/time-of-day-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/time-of-day-h_REF.gc @@ -218,5 +218,4 @@ (define *time-of-day-context* (new 'static 'time-of-day-context)) ;; failed to figure out what this is: -(let ((v0-13 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc b/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc index 1006f34903..7f1ebd41b4 100644 --- a/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/vis/bsp-h_REF.gc @@ -238,5 +238,4 @@ ) ;; failed to figure out what this is: -(let ((v0-12 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/water/water-h_REF.gc b/test/decompiler/reference/engine/gfx/water/water-h_REF.gc index af9aef2fd8..c0829b6956 100644 --- a/test/decompiler/reference/engine/gfx/water/water-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/water/water-h_REF.gc @@ -178,5 +178,4 @@ ) ;; failed to figure out what this is: -(let ((v0-7 0)) - ) +0 diff --git a/test/decompiler/reference/engine/gfx/wind_REF.gc b/test/decompiler/reference/engine/gfx/wind_REF.gc index 7722901514..aa18c88467 100644 --- a/test/decompiler/reference/engine/gfx/wind_REF.gc +++ b/test/decompiler/reference/engine/gfx/wind_REF.gc @@ -7,70 +7,54 @@ ;; definition for function update-wind ;; INFO: Return type mismatch int vs none. (defun update-wind ((arg0 wind-work) (arg1 (array uint8))) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) + (let* ((f0-1 (+ (-> arg0 wind-normal w) (rand-vu-float-range -1024.0 1024.0))) + (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0))) ) - (init-vf0-vector) - (let* - ((f0-1 (+ (-> arg0 wind-normal w) (rand-vu-float-range -1024.0 1024.0))) - (f30-1 (- f0-1 (* (the float (the int (/ f0-1 65536.0))) 65536.0))) - ) - (set! (-> arg0 wind-normal w) f30-1) - (set! (-> arg0 wind-normal x) (cos f30-1)) - (set! (-> arg0 wind-normal z) (sin f30-1)) - ) - (set! (-> arg0 wind-time) (+ (-> arg0 wind-time) 1)) - (let* ((s4-0 (logand (-> arg0 wind-time) 63)) - (f0-4 (rand-vu-float-range 0.0 100.0)) - (v1-5 (/ (-> arg0 wind-time) (the-as uint 120))) - (f1-6 - (* - 0.008333334 - (the float (mod (-> arg0 wind-time) (the-as uint 120))) - ) - ) - (f2-4 - (* - 0.0625 - (the float (-> arg1 (mod (the-as int v1-5) (-> arg1 length)))) - ) - ) - (f0-5 - (* - (+ - (* - (- - (* - 0.0625 - (the - float - (-> arg1 (mod (the-as int (+ v1-5 1)) (-> arg1 length))) - ) - ) - f2-4 - ) - f1-6 - ) - f2-4 - ) - f0-4 - ) + (set! (-> arg0 wind-normal w) f30-1) + (set! (-> arg0 wind-normal x) (cos f30-1)) + (set! (-> arg0 wind-normal z) (sin f30-1)) + ) + (set! (-> arg0 wind-time) (+ (-> arg0 wind-time) 1)) + (let* ((s4-0 (logand (-> arg0 wind-time) 63)) + (f0-4 (rand-vu-float-range 0.0 100.0)) + (v1-5 (/ (-> arg0 wind-time) (the-as uint 120))) + (f1-6 + (* + 0.008333334 + (the float (mod (-> arg0 wind-time) (the-as uint 120))) ) ) - (set! (-> *wind-work* wind-force s4-0) f0-5) - (let ((v1-14 (-> *wind-work* wind-array s4-0))) - (.lvf vf1 (&-> (-> arg0 wind-normal) quad)) - (let ((a0-16 f0-5)) - (.mov vf2 a0-16) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-14 quad) vf1) - ) - ) - (let ((v0-4 0)) - ) - (none) + (f2-4 + (* + 0.0625 + (the float (-> arg1 (mod (the-as int v1-5) (-> arg1 length)))) + ) + ) + (f0-5 + (* + (+ + (* + (- + (* + 0.0625 + (the + float + (-> arg1 (mod (the-as int (+ v1-5 1)) (-> arg1 length))) + ) + ) + f2-4 + ) + f1-6 + ) + f2-4 + ) + f0-4 + ) + ) + ) + (set! (-> *wind-work* wind-force s4-0) f0-5) + (vector-float*! (-> *wind-work* wind-array s4-0) (-> arg0 wind-normal) f0-5) ) + 0 + (none) ) diff --git a/test/decompiler/reference/engine/load/load-dgo_REF.gc b/test/decompiler/reference/engine/load/load-dgo_REF.gc index a2c32322aa..a3a127c67e 100644 --- a/test/decompiler/reference/engine/load/load-dgo_REF.gc +++ b/test/decompiler/reference/engine/load/load-dgo_REF.gc @@ -136,8 +136,7 @@ (defun str-load-cancel () (set! *load-str-lock* #f) (set! *que-str-lock* #t) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -150,10 +149,8 @@ (set! (-> cmd address) addr) (set! (-> cmd result) (load-msg-result done)) ) - (let ((v1-2 0)) - ) - (let ((v0-2 0)) - ) + 0 + 0 (none) ) @@ -165,8 +162,7 @@ (charp<-string (-> cmd basename) name) (set! (-> cmd result) (load-msg-result error)) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -185,8 +181,7 @@ ) ) (set! *que-str-lock* #f) - (let ((v0-3 0)) - ) + 0 (none) ) @@ -199,10 +194,8 @@ (charp<-string (&-> cmd basename 1) name) (set! (-> cmd result) (load-msg-result done)) ) - (let ((v1-3 0)) - ) - (let ((v0-2 0)) - ) + 0 + 0 (none) ) @@ -215,8 +208,7 @@ (charp<-string (&-> cmd basename 1) name) (set! (-> cmd result) (load-msg-result error)) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -230,8 +222,7 @@ (call *play-str-rpc* (the-as uint 0) (the-as pointer 0) (the-as uint 0)) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -314,8 +305,7 @@ (let ((cmd (add-element *load-dgo-rpc*))) (call *load-dgo-rpc* (the-as uint 2) cmd (the-as uint 32)) ) - (let ((v0-3 0)) - ) + 0 (none) ) @@ -413,7 +403,6 @@ (set! (-> arg0 0) (the-as uint #xffffffff)) (set! arg0 (&-> arg0 1)) ) - (let ((v0-0 0)) - ) + 0 (none) ) diff --git a/test/decompiler/reference/engine/load/loader-h_REF.gc b/test/decompiler/reference/engine/load/loader-h_REF.gc index 7116367d42..a7f1271502 100644 --- a/test/decompiler/reference/engine/load/loader-h_REF.gc +++ b/test/decompiler/reference/engine/load/loader-h_REF.gc @@ -272,5 +272,4 @@ ) ;; failed to figure out what this is: -(let ((v0-12 0)) - ) +0 diff --git a/test/decompiler/reference/engine/load/ramdisk_REF.gc b/test/decompiler/reference/engine/load/ramdisk_REF.gc index 3d2b40c682..02dc5b66ca 100644 --- a/test/decompiler/reference/engine/load/ramdisk_REF.gc +++ b/test/decompiler/reference/engine/load/ramdisk_REF.gc @@ -95,11 +95,9 @@ ;; INFO: Return type mismatch int vs none. (defun ramdisk-sync () (sync *ramdisk-rpc* #t) - (let ((v0-1 0)) - ) + 0 (none) ) ;; failed to figure out what this is: -(let ((v0-7 0)) - ) +0 diff --git a/test/decompiler/reference/engine/math/euler-h_REF.gc b/test/decompiler/reference/engine/math/euler-h_REF.gc index f02b528e8b..434506ff5f 100644 --- a/test/decompiler/reference/engine/math/euler-h_REF.gc +++ b/test/decompiler/reference/engine/math/euler-h_REF.gc @@ -39,5 +39,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/math/euler_REF.gc b/test/decompiler/reference/engine/math/euler_REF.gc index d99a73be9c..08c110a0e4 100644 --- a/test/decompiler/reference/engine/math/euler_REF.gc +++ b/test/decompiler/reference/engine/math/euler_REF.gc @@ -40,12 +40,9 @@ (f2-0 (* f24-0 f22-0)) (f3-0 (* f24-0 f4-0)) ) - (let ((v1-7 0)) - ) - (let ((v1-8 0)) - ) - (let ((v1-9 0)) - ) + 0 + 0 + 0 (let* ((v1-12 (logand (/ (the int (-> s5-0 w)) 4) 1)) (a1-2 (-> EulSafe (logand (/ (the int (-> s5-0 w)) 8) 3))) (a0-21 (-> EulNext (+ a1-2 v1-12))) @@ -227,12 +224,9 @@ ;; definition for function matrix->eul (defun matrix->eul ((arg0 euler-angles) (arg1 matrix) (arg2 int)) - (let ((v1-0 0)) - ) - (let ((v1-1 0)) - ) - (let ((v1-2 0)) - ) + 0 + 0 + 0 (let* ((v1-4 (logand (/ arg2 4) 1)) (s3-0 (-> EulSafe (logand (/ arg2 8) 3))) (s2-0 (-> EulNext (+ s3-0 v1-4))) diff --git a/test/decompiler/reference/engine/math/math_REF.gc b/test/decompiler/reference/engine/math/math_REF.gc index e9fb7c1acc..958cc0a003 100644 --- a/test/decompiler/reference/engine/math/math_REF.gc +++ b/test/decompiler/reference/engine/math/math_REF.gc @@ -222,5 +222,4 @@ ;; ERROR: function was not converted to expressions. Cannot decompile. ;; failed to figure out what this is: -(let ((v0-7 0)) - ) +0 diff --git a/test/decompiler/reference/engine/math/quaternion-h_REF.gc b/test/decompiler/reference/engine/math/quaternion-h_REF.gc index 447fc8485e..ff460d12b0 100644 --- a/test/decompiler/reference/engine/math/quaternion-h_REF.gc +++ b/test/decompiler/reference/engine/math/quaternion-h_REF.gc @@ -35,5 +35,4 @@ (define *unity-quaternion* (new 'static 'quaternion :w 1.0)) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/math/quaternion_REF.gc b/test/decompiler/reference/engine/math/quaternion_REF.gc index 68fa9cdd94..11260fa508 100644 --- a/test/decompiler/reference/engine/math/quaternion_REF.gc +++ b/test/decompiler/reference/engine/math/quaternion_REF.gc @@ -814,8 +814,7 @@ (f0-0 1.0) ) (when (< f1-0 0.0) - (let ((f0-1 (- f1-0))) - ) + (- f1-0) (set! f0-0 -1.0) ) (let ((v1-2 (- 1.0 arg3))) @@ -1117,8 +1116,7 @@ ) ) ) - (let ((v0-5 0)) - ) + 0 (none) ) ) diff --git a/test/decompiler/reference/engine/math/transform-h_REF.gc b/test/decompiler/reference/engine/math/transform-h_REF.gc index b34d6733bb..04c23c754e 100644 --- a/test/decompiler/reference/engine/math/transform-h_REF.gc +++ b/test/decompiler/reference/engine/math/transform-h_REF.gc @@ -45,5 +45,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/math/transformq-h_REF.gc b/test/decompiler/reference/engine/math/transformq-h_REF.gc index 69ac7081df..67527fd69f 100644 --- a/test/decompiler/reference/engine/math/transformq-h_REF.gc +++ b/test/decompiler/reference/engine/math/transformq-h_REF.gc @@ -112,5 +112,4 @@ ) ;; failed to figure out what this is: -(let ((v0-8 0)) - ) +0 diff --git a/test/decompiler/reference/engine/math/trigonometry-h_REF.gc b/test/decompiler/reference/engine/math/trigonometry-h_REF.gc index d92736d4cf..096752c8a2 100644 --- a/test/decompiler/reference/engine/math/trigonometry-h_REF.gc +++ b/test/decompiler/reference/engine/math/trigonometry-h_REF.gc @@ -2,5 +2,4 @@ (in-package goal) ;; failed to figure out what this is: -(let ((v0-0 0)) - ) +0 diff --git a/test/decompiler/reference/engine/math/trigonometry_REF.gc b/test/decompiler/reference/engine/math/trigonometry_REF.gc index fd684bad71..0467eb7cbe 100644 --- a/test/decompiler/reference/engine/math/trigonometry_REF.gc +++ b/test/decompiler/reference/engine/math/trigonometry_REF.gc @@ -176,8 +176,7 @@ ;; definition for function sin (defun sin ((arg0 float)) (let ((f2-0 (* 0.000095873795 (the float (sar (shl (the int arg0) 48) 48))))) - (let ((f0-1 f2-0)) - ) + f2-0 (let* ((f1-4 (* 0.999998 f2-0)) (f0-3 (* f2-0 f2-0)) (f2-1 (* f2-0 f0-3)) @@ -689,8 +688,7 @@ ;; definition for function asin (defun asin ((arg0 float)) (let ((gp-0 #f)) - (let ((f0-0 0.0)) - ) + 0.0 (when (< arg0 0.0) (set! arg0 (- arg0)) (set! gp-0 #t) diff --git a/test/decompiler/reference/engine/math/vector-h_REF.gc b/test/decompiler/reference/engine/math/vector-h_REF.gc index b24ba71542..b146fea6c1 100644 --- a/test/decompiler/reference/engine/math/vector-h_REF.gc +++ b/test/decompiler/reference/engine/math/vector-h_REF.gc @@ -903,36 +903,12 @@ ;; definition for function vector+! (defun vector+! ((arg0 vector) (arg1 vector) (arg2 vector)) - (rlet ((vf0 :class vf) - (vf4 :class vf) - (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (.mov.vf vf6 vf0 :mask #b1000) - (.lvf vf4 (&-> arg1 quad)) - (.lvf vf5 (&-> arg2 quad)) - (.add.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> arg0 quad) vf6) - arg0 - ) + (vector+! arg0 arg1 arg2) ) ;; definition for function vector-! (defun vector-! ((arg0 vector) (arg1 vector) (arg2 vector)) - (rlet ((vf0 :class vf) - (vf4 :class vf) - (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (.lvf vf4 (&-> arg1 quad)) - (.lvf vf5 (&-> arg2 quad)) - (.mov.vf vf6 vf0 :mask #b1000) - (.sub.vf vf6 vf4 vf5 :mask #b111) - (.svf (&-> arg0 quad) vf6) - arg0 - ) + (vector-! arg0 arg1 arg2) ) ;; definition for function vector-zero! diff --git a/test/decompiler/reference/engine/math/vector_REF.gc b/test/decompiler/reference/engine/math/vector_REF.gc index ab8c5e1622..67b29f663b 100644 --- a/test/decompiler/reference/engine/math/vector_REF.gc +++ b/test/decompiler/reference/engine/math/vector_REF.gc @@ -458,26 +458,8 @@ ;; definition for function vector-v! (defun vector-v! ((arg0 vector)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((v1-0 arg0)) - (let ((a1-0 arg0) - (f0-0 (-> *display* seconds-per-frame)) - ) - (.lvf vf1 (&-> a1-0 quad)) - (let ((a1-1 f0-0)) - (.mov vf2 a1-1) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-0 quad) vf1) - ) - arg0 - ) + (vector-float*! arg0 arg0 (-> *display* seconds-per-frame)) + arg0 ) ;; definition for function vector-v+! @@ -507,26 +489,7 @@ ;; definition for function vector-v*float! (defun vector-v*float! ((delta-p vector) (velocity vector) (scale float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((v0-0 delta-p)) - (let ((v1-0 velocity) - (f0-1 (* scale (-> *display* seconds-per-frame))) - ) - (.lvf vf1 (&-> v1-0 quad)) - (let ((v1-1 f0-1)) - (.mov vf2 v1-1) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v0-0 quad) vf1) - v0-0 - ) - ) + (vector-float*! delta-p velocity (* scale (-> *display* seconds-per-frame))) ) ;; definition for function vector-v*float++! @@ -1143,8 +1106,7 @@ ;; definition for function vector3s-copy! (defun vector3s-copy! ((arg0 vector) (arg1 vector)) - (let ((v1-0 "Copy a vector3s")) - ) + "Copy a vector3s" (set! (-> arg0 x) (-> arg1 x)) (set! (-> arg0 y) (-> arg1 y)) (set! (-> arg0 z) (-> arg1 z)) @@ -1153,8 +1115,7 @@ ;; definition for function vector3s+! (defun vector3s+! ((arg0 vector) (arg1 vector) (arg2 vector)) - (let ((v1-0 "Add 2 vectors3.")) - ) + "Add 2 vectors3." (set! (-> arg0 x) (+ (-> arg1 x) (-> arg2 x))) (set! (-> arg0 y) (+ (-> arg1 y) (-> arg2 y))) (set! (-> arg0 z) (+ (-> arg1 z) (-> arg2 z))) @@ -1163,8 +1124,7 @@ ;; definition for function vector3s*float! (defun vector3s*float! ((arg0 vector) (arg1 vector) (arg2 float)) - (let ((v1-0 "mult vectors3 by float")) - ) + "mult vectors3 by float" (set! (-> arg0 x) (* (-> arg1 x) arg2)) (set! (-> arg0 y) (* (-> arg1 y) arg2)) (set! (-> arg0 z) (* (-> arg1 z) arg2)) @@ -1173,8 +1133,7 @@ ;; definition for function vector3s-! (defun vector3s-! ((arg0 vector) (arg1 vector) (arg2 vector)) - (let ((v1-0 "Subtract 2 vectors3: c = (a - b).")) - ) + "Subtract 2 vectors3: c = (a - b)." (set! (-> arg0 x) (- (-> arg1 x) (-> arg2 x))) (set! (-> arg0 y) (- (-> arg1 y) (-> arg2 y))) (set! (-> arg0 z) (- (-> arg1 z) (-> arg2 z))) diff --git a/test/decompiler/reference/engine/nav/path-h_REF.gc b/test/decompiler/reference/engine/nav/path-h_REF.gc index c3989145aa..b3d62c8229 100644 --- a/test/decompiler/reference/engine/nav/path-h_REF.gc +++ b/test/decompiler/reference/engine/nav/path-h_REF.gc @@ -136,8 +136,7 @@ ) (set! (-> obj curve cverts) (the-as pointer #f)) (set! (-> obj curve num-cverts) 0) - (let ((v1-16 0)) - ) + 0 ) ) ) @@ -215,8 +214,7 @@ ) (set! (-> obj curve cverts) (the-as pointer #f)) (set! (-> obj curve num-cverts) 0) - (let ((v1-11 0)) - ) + 0 ) ) ) @@ -226,5 +224,4 @@ ) ;; failed to figure out what this is: -(let ((v0-9 0)) - ) +0 diff --git a/test/decompiler/reference/engine/physics/dynamics-h_REF.gc b/test/decompiler/reference/engine/physics/dynamics-h_REF.gc index 8f83528585..c9162fb4ee 100644 --- a/test/decompiler/reference/engine/physics/dynamics-h_REF.gc +++ b/test/decompiler/reference/engine/physics/dynamics-h_REF.gc @@ -64,5 +64,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/physics/trajectory-h_REF.gc b/test/decompiler/reference/engine/physics/trajectory-h_REF.gc index ffd545bdc8..4378093ade 100644 --- a/test/decompiler/reference/engine/physics/trajectory-h_REF.gc +++ b/test/decompiler/reference/engine/physics/trajectory-h_REF.gc @@ -33,5 +33,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/engine/physics/trajectory_REF.gc b/test/decompiler/reference/engine/physics/trajectory_REF.gc index 7b10b9d871..e415e84c51 100644 --- a/test/decompiler/reference/engine/physics/trajectory_REF.gc +++ b/test/decompiler/reference/engine/physics/trajectory_REF.gc @@ -41,8 +41,7 @@ (-> obj initial-velocity y) (- (/ (- (-> arg1 y) (-> arg0 y)) arg2) (* (* 0.5 arg2) (-> obj gravity))) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -55,8 +54,7 @@ (let ((f0-1 (/ (vector-vector-xz-distance arg1 arg0) arg2))) (TODO-RENAME-11 obj arg0 arg1 f0-1 arg3) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -77,8 +75,7 @@ ) (TODO-RENAME-11 obj arg0 arg1 f0-3 arg3) ) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -97,8 +94,7 @@ ) (TODO-RENAME-13 obj arg0 arg1 f0-3 arg3) ) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -128,7 +124,6 @@ ) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) diff --git a/test/decompiler/reference/engine/ps2/memcard-h_REF.gc b/test/decompiler/reference/engine/ps2/memcard-h_REF.gc index 6b06114489..f8af12dc2f 100644 --- a/test/decompiler/reference/engine/ps2/memcard-h_REF.gc +++ b/test/decompiler/reference/engine/ps2/memcard-h_REF.gc @@ -97,13 +97,11 @@ (cond ((zero? (-> info known)) (format (clear *temp-string*) "SLOT ~D: EXAMINING SLOT~%" slot-idx) - (let ((v1-1 *temp-string*)) - ) + *temp-string* ) ((zero? (-> info handle)) (format (clear *temp-string*) "SLOT ~D: NO CARD~%" slot-idx) - (let ((v1-3 *temp-string*)) - ) + *temp-string* ) ((zero? (-> info formatted)) (format @@ -112,8 +110,7 @@ slot-idx (-> info handle) ) - (let ((v1-5 *temp-string*)) - ) + *temp-string* ) ((zero? (-> info inited)) (format @@ -124,8 +121,7 @@ (-> info mem-required) (-> info mem-actual) ) - (let ((v1-7 *temp-string*)) - ) + *temp-string* ) (else (format @@ -134,8 +130,7 @@ slot-idx (-> info handle) ) - (let ((v1-8 *temp-string*)) - ) + *temp-string* (format *temp-string* "SAVES ~D ~D ~D ~D : LAST ~D~%" @@ -150,11 +145,9 @@ (draw-string-xy *temp-string* dma-buf 32 (+ (* 12 slot-idx) 8) 3 1) ) ) - (let ((v0-13 0)) - ) + 0 (none) ) ;; failed to figure out what this is: -(let ((v0-5 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ps2/pad_REF.gc b/test/decompiler/reference/engine/ps2/pad_REF.gc index 189deaa061..937791191d 100644 --- a/test/decompiler/reference/engine/ps2/pad_REF.gc +++ b/test/decompiler/reference/engine/ps2/pad_REF.gc @@ -209,8 +209,7 @@ (cond ((zero? buzz-amount) (set! (-> pad buzz-val buzz-idx) (the-as uint 0)) - (let ((v1-2 0)) - ) + 0 ) ((= buzz-amount (-> pad buzz-val buzz-idx)) (set! @@ -229,8 +228,7 @@ ) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -281,8 +279,7 @@ (else (set! (-> pad buzz-val buzz-idx) (the-as uint 0)) (set! (-> pad direct buzz-idx) (the-as uint 0)) - (let ((v1-22 0)) - ) + 0 ) ) ) @@ -358,11 +355,9 @@ (defun buzz-stop! ((idx int)) (cpad-set-buzz! (-> *cpad-list* cpads idx) 0 0 0) (cpad-set-buzz! (-> *cpad-list* cpads idx) 1 0 0) - (let ((v0-2 0)) - ) + 0 (none) ) ;; failed to figure out what this is: -(let ((v0-9 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ps2/rpc-h_REF.gc b/test/decompiler/reference/engine/ps2/rpc-h_REF.gc index 416140bed0..37db005a76 100644 --- a/test/decompiler/reference/engine/ps2/rpc-h_REF.gc +++ b/test/decompiler/reference/engine/ps2/rpc-h_REF.gc @@ -129,8 +129,7 @@ ) (set! (-> s5-0 busy) #f) (set! (-> s5-0 elt-used) (the-as uint 0)) - (let ((v1-7 0)) - ) + 0 ) ) 0 @@ -150,8 +149,7 @@ ) (set! (-> gp-0 busy) #f) (set! (-> gp-0 elt-used) (the-as uint 0)) - (let ((v1-6 0)) - ) + 0 ) ) #f @@ -185,8 +183,7 @@ ) (set! (-> s2-0 busy) #f) (set! (-> s2-0 elt-used) (the-as uint 0)) - (let ((v1-8 0)) - ) + 0 ) (let ((s1-0 (-> obj current))) (rpc-call @@ -241,5 +238,4 @@ ) ;; failed to figure out what this is: -(let ((v0-12 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ps2/timer-h_REF.gc b/test/decompiler/reference/engine/ps2/timer-h_REF.gc index 7fb687198b..e4e39343e2 100644 --- a/test/decompiler/reference/engine/ps2/timer-h_REF.gc +++ b/test/decompiler/reference/engine/ps2/timer-h_REF.gc @@ -165,5 +165,4 @@ ) ;; failed to figure out what this is: -(let ((v0-14 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ps2/timer_REF.gc b/test/decompiler/reference/engine/ps2/timer_REF.gc index 9a7e819678..9c154536a7 100644 --- a/test/decompiler/reference/engine/ps2/timer_REF.gc +++ b/test/decompiler/reference/engine/ps2/timer_REF.gc @@ -9,8 +9,7 @@ (.sync.l) (set! (-> arg0 count) (the-as uint 0)) (.sync.l) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -39,8 +38,7 @@ ) ) (.sync.p) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -56,8 +54,7 @@ (.mtc0 Status v0-1) ) (.sync.p) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -74,8 +71,7 @@ (local-vars (v1-3 int)) (set! (-> arg0 prev-time-elapsed) (the-as uint 0)) (when (> (-> arg0 begin-level) 0) - (let ((v1-2 0)) - ) + 0 (.mfc0 v1-3 Count) (set! (-> arg0 start-time) (the-as uint v1-3)) ) @@ -88,8 +84,7 @@ (local-vars (v1-4 int)) (when (zero? (-> arg0 begin-level)) (set! (-> arg0 begin-level) 1) - (let ((v1-3 0)) - ) + 0 (.mfc0 v1-4 Count) (set! (-> arg0 start-time) (the-as uint v1-4)) ) @@ -103,8 +98,7 @@ (local-vars (a1-0 int)) (when (> (-> arg0 begin-level) 0) (set! (-> arg0 begin-level) 0) - (let ((v1-2 0)) - ) + 0 (.mfc0 a1-0 Count) (set! (-> arg0 prev-time-elapsed) @@ -122,8 +116,7 @@ (defun stopwatch-begin ((arg0 stopwatch)) (local-vars (v1-3 int)) (when (zero? (-> arg0 begin-level)) - (let ((v1-2 0)) - ) + 0 (.mfc0 v1-3 Count) (set! (-> arg0 start-time) (the-as uint v1-3)) ) @@ -138,8 +131,7 @@ (local-vars (a1-0 int)) (set! (-> arg0 begin-level) (+ (-> arg0 begin-level) -1)) (when (zero? (-> arg0 begin-level)) - (let ((v1-4 0)) - ) + 0 (.mfc0 a1-0 Count) (set! (-> arg0 prev-time-elapsed) @@ -158,8 +150,7 @@ (local-vars (v1-3 int)) (let ((v0-0 (-> arg0 prev-time-elapsed))) (when (> (-> arg0 begin-level) 0) - (let ((v1-2 0)) - ) + 0 (.mfc0 v1-3 Count) (+! v0-0 (the-as uint (- v1-3 (the-as int (-> arg0 start-time))))) ) @@ -173,4 +164,3 @@ (* 0.0000000033333334 (the float v1-0)) ) ) - diff --git a/test/decompiler/reference/engine/ps2/vif-h_REF.gc b/test/decompiler/reference/engine/ps2/vif-h_REF.gc index 5d3b572e35..8bca32aee8 100644 --- a/test/decompiler/reference/engine/ps2/vif-h_REF.gc +++ b/test/decompiler/reference/engine/ps2/vif-h_REF.gc @@ -119,5 +119,4 @@ ) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ps2/vu1-macros_REF.gc b/test/decompiler/reference/engine/ps2/vu1-macros_REF.gc index d92736d4cf..096752c8a2 100644 --- a/test/decompiler/reference/engine/ps2/vu1-macros_REF.gc +++ b/test/decompiler/reference/engine/ps2/vu1-macros_REF.gc @@ -2,5 +2,4 @@ (in-package goal) ;; failed to figure out what this is: -(let ((v0-0 0)) - ) +0 diff --git a/test/decompiler/reference/engine/sound/gsound-h_REF.gc b/test/decompiler/reference/engine/sound/gsound-h_REF.gc index 44cd641210..b64471e9a5 100644 --- a/test/decompiler/reference/engine/sound/gsound-h_REF.gc +++ b/test/decompiler/reference/engine/sound/gsound-h_REF.gc @@ -820,5 +820,4 @@ (define *sound-bank-2* #f) ;; failed to figure out what this is: -(let ((v0-65 0)) - ) +0 diff --git a/test/decompiler/reference/engine/target/joint-mod-h_REF.gc b/test/decompiler/reference/engine/target/joint-mod-h_REF.gc index d551e83c8e..3e05f5f4b1 100644 --- a/test/decompiler/reference/engine/target/joint-mod-h_REF.gc +++ b/test/decompiler/reference/engine/target/joint-mod-h_REF.gc @@ -67,8 +67,7 @@ ;; INFO: Return type mismatch int vs none. (defun-debug joint-mod-debug-draw ((mod joint-mod)) (add-debug-matrix #t (bucket-id debug-draw1) (-> mod joint bone transform)) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -225,8 +224,7 @@ (if scale (set! (-> obj scale quad) (-> scale quad)) ) - (let ((v0-1 0)) - ) + 0 (none) ) @@ -247,8 +245,7 @@ (set! (-> obj blend) 0.0) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -364,8 +361,7 @@ (set! (-> obj shutting-down?) #f) ) ) - (let ((v0-6 0)) - ) + 0 (none) ) @@ -403,8 +399,8 @@ ) ) (let* ((f30-0 (vector-y-angle sv-52)) - (a0-8 (vector-flatten! (new-stack-vector0) sv-56 sv-48)) - (f0-0 (vector-y-angle a0-8)) + (a0-9 (vector-flatten! (new-stack-vector0) sv-56 sv-48)) + (f0-0 (vector-y-angle a0-9)) (f0-1 (deg-diff f30-0 f0-0)) ) (if (< (-> gp-0 ignore-angle) (fabs f0-1)) @@ -516,8 +512,7 @@ ) ) ) - (let ((v0-26 0)) - ) + 0 (none) ) @@ -553,8 +548,8 @@ ) ) (let* ((f30-0 (vector-y-angle sv-52)) - (a0-6 (vector-flatten! (new-stack-vector0) sv-56 sv-48)) - (f0-0 (vector-y-angle a0-6)) + (a0-7 (vector-flatten! (new-stack-vector0) sv-56 sv-48)) + (f0-0 (vector-y-angle a0-7)) (f0-1 (deg-diff f30-0 f0-0)) ) (if (< (-> gp-0 ignore-angle) (fabs f0-1)) @@ -658,8 +653,7 @@ ) ) ) - (let ((v0-22 0)) - ) + 0 (none) ) @@ -716,8 +710,7 @@ ) ) (cspace<-parented-transformq-joint! arg0 arg1) - (let ((v0-10 0)) - ) + 0 (none) ) @@ -731,8 +724,7 @@ (set! (-> arg1 scale quad) (-> s4-0 scale quad)) ) (cspace<-parented-transformq-joint! arg0 arg1) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -755,8 +747,7 @@ ) ) ) - (let ((v0-4 0)) - ) + 0 (none) ) @@ -813,10 +804,8 @@ (s3-0 (new-stack-vector0)) (s2-0 (new-stack-vector0)) ) - (let ((f0-0 0.0)) - ) - (let ((f0-1 0.0)) - ) + 0.0 + 0.0 (vector-z-quaternion! s2-0 (-> v1-1 quat)) (vector<-cspace! s1-0 arg0) (vector-! s3-0 s1-0 (-> s4-0 last-position)) diff --git a/test/decompiler/reference/engine/target/pat-h_REF.gc b/test/decompiler/reference/engine/target/pat-h_REF.gc index ec08943964..ace4daf1c3 100644 --- a/test/decompiler/reference/engine/target/pat-h_REF.gc +++ b/test/decompiler/reference/engine/target/pat-h_REF.gc @@ -223,5 +223,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/target/surface-h_REF.gc b/test/decompiler/reference/engine/target/surface-h_REF.gc index 0fb6e8a247..6b60a59225 100644 --- a/test/decompiler/reference/engine/target/surface-h_REF.gc +++ b/test/decompiler/reference/engine/target/surface-h_REF.gc @@ -1398,5 +1398,4 @@ (define *swim-surface* *stone-surface*) ;; failed to figure out what this is: -(let ((v0-6 0)) - ) +0 diff --git a/test/decompiler/reference/engine/target/target-h_REF.gc b/test/decompiler/reference/engine/target/target-h_REF.gc index c57b349631..86309621b3 100644 --- a/test/decompiler/reference/engine/target/target-h_REF.gc +++ b/test/decompiler/reference/engine/target/target-h_REF.gc @@ -105,5 +105,4 @@ (define-perm *sidekick* sidekick #f) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ui/credits_REF.gc b/test/decompiler/reference/engine/ui/credits_REF.gc index 5e61d0fad6..bea821bbf0 100644 --- a/test/decompiler/reference/engine/ui/credits_REF.gc +++ b/test/decompiler/reference/engine/ui/credits_REF.gc @@ -4,8 +4,7 @@ ;; definition for function set-credits-font-color ;; INFO: Return type mismatch int vs none. (defun set-credits-font-color ((arg0 float)) - (let ((f0-0 255.0)) - ) + 255.0 (dotimes (v1-0 4) (let ((f0-2 (* 64.0 arg0))) (if (< 128.0 f0-2) @@ -26,8 +25,7 @@ (set! (-> *font-work* color-table 32 color v1-0 b) (the int f0-8)) ) ) - (let ((v0-0 0)) - ) + 0 (none) ) @@ -91,8 +89,7 @@ ) ) ) - (let ((f0-3 1.0)) - ) + 1.0 (let ((v1-3 gp-0)) (set! (-> v1-3 width) (the float 600)) ) @@ -158,8 +155,7 @@ ) ) ) - (let ((v0-6 0)) - ) + 0 (none) ) diff --git a/test/decompiler/reference/engine/ui/hud-h_REF.gc b/test/decompiler/reference/engine/ui/hud-h_REF.gc index 06ac93a50c..ea0c35b1b8 100644 --- a/test/decompiler/reference/engine/ui/hud-h_REF.gc +++ b/test/decompiler/reference/engine/ui/hud-h_REF.gc @@ -183,5 +183,4 @@ ) ;; failed to figure out what this is: -(let ((v0-8 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ui/progress-h_REF.gc b/test/decompiler/reference/engine/ui/progress-h_REF.gc index 60305d4727..e74cfc801a 100644 --- a/test/decompiler/reference/engine/ui/progress-h_REF.gc +++ b/test/decompiler/reference/engine/ui/progress-h_REF.gc @@ -308,5 +308,4 @@ (define *progress-last-task-index* 0) ;; failed to figure out what this is: -(let ((v0-12 0)) - ) +0 diff --git a/test/decompiler/reference/engine/ui/text-h_REF.gc b/test/decompiler/reference/engine/ui/text-h_REF.gc index 99caa2899d..a5079ef6e8 100644 --- a/test/decompiler/reference/engine/ui/text-h_REF.gc +++ b/test/decompiler/reference/engine/ui/text-h_REF.gc @@ -65,5 +65,4 @@ (define *common-text* (the-as game-text-info #f)) ;; failed to figure out what this is: -(let ((v0-5 0)) - ) +0 diff --git a/test/decompiler/reference/engine/util/sync-info-h_REF.gc b/test/decompiler/reference/engine/util/sync-info-h_REF.gc index 60715decb2..f4aeffdde4 100644 --- a/test/decompiler/reference/engine/util/sync-info-h_REF.gc +++ b/test/decompiler/reference/engine/util/sync-info-h_REF.gc @@ -231,5 +231,4 @@ ) ;; failed to figure out what this is: -(let ((v0-16 0)) - ) +0 diff --git a/test/decompiler/reference/engine/util/sync-info_REF.gc b/test/decompiler/reference/engine/util/sync-info_REF.gc index ae2a9b5b01..a546f28ea3 100644 --- a/test/decompiler/reference/engine/util/sync-info_REF.gc +++ b/test/decompiler/reference/engine/util/sync-info_REF.gc @@ -555,80 +555,30 @@ ;; definition for method 10 of type oscillating-vector (defmethod dummy-10 oscillating-vector ((obj oscillating-vector) (arg0 vector)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (cond - (arg0 - (vector+! s5-0 (-> obj target) arg0) - (vector-! s5-0 s5-0 (-> obj value)) - ) - (else - (vector-! s5-0 (-> obj target) (-> obj value)) - ) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (cond + (arg0 + (vector+! s5-0 (-> obj target) arg0) + (vector-! s5-0 s5-0 (-> obj value)) ) - (let ((v1-3 s5-0)) - (let ((a0-4 s5-0) - (f0-1 (* (-> obj accel) (-> *display* time-adjust-ratio))) - ) - (.lvf vf1 (&-> a0-4 quad)) - (let ((a0-5 f0-1)) - (.mov vf2 a0-5) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-3 quad) vf1) + (else + (vector-! s5-0 (-> obj target) (-> obj value)) ) - (vector+! (-> obj vel) (-> obj vel) s5-0) - (let ((f0-2 (vector-length (-> obj vel)))) - (when (< (-> obj max-vel) f0-2) - (let ((v1-6 (-> obj vel))) - (let ((a0-8 (-> obj vel)) - (f0-3 (/ (-> obj max-vel) f0-2)) - ) - (.lvf vf1 (&-> a0-8 quad)) - (let ((a0-9 f0-3)) - (.mov vf2 a0-9) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-6 quad) vf1) - ) - ) - ) - (let ((v1-7 (-> obj vel))) - (let ((a0-10 (-> obj vel)) - (f0-4 (-> obj damping)) - ) - (.lvf vf1 (&-> a0-10 quad)) - (let ((a0-11 f0-4)) - (.mov vf2 a0-11) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (let ((v1-8 s5-0)) - (let ((a0-12 (-> obj vel)) - (f0-5 (-> *display* time-adjust-ratio)) - ) - (.lvf vf1 (&-> a0-12 quad)) - (let ((a0-13 f0-5)) - (.mov vf2 a0-13) - ) - ) - (.add.x.vf vf1 vf0 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-8 quad) vf1) - ) - (vector+! (-> obj value) (-> obj value) s5-0) ) - (-> obj value) + (vector-float*! + s5-0 + s5-0 + (* (-> obj accel) (-> *display* time-adjust-ratio)) + ) + (vector+! (-> obj vel) (-> obj vel) s5-0) + (let ((f0-2 (vector-length (-> obj vel)))) + (if (< (-> obj max-vel) f0-2) + (vector-float*! (-> obj vel) (-> obj vel) (/ (-> obj max-vel) f0-2)) + ) + ) + (vector-float*! (-> obj vel) (-> obj vel) (-> obj damping)) + (vector-float*! s5-0 (-> obj vel) (-> *display* time-adjust-ratio)) + (vector+! (-> obj value) (-> obj value) s5-0) ) + (-> obj value) ) diff --git a/test/decompiler/reference/engine/util/types-h_REF.gc b/test/decompiler/reference/engine/util/types-h_REF.gc index 69b8d1392f..21b630d344 100644 --- a/test/decompiler/reference/engine/util/types-h_REF.gc +++ b/test/decompiler/reference/engine/util/types-h_REF.gc @@ -18,5 +18,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/kernel/dgo-h_REF.gc b/test/decompiler/reference/kernel/dgo-h_REF.gc index aacd7ad1fd..d33866dfa1 100644 --- a/test/decompiler/reference/kernel/dgo-h_REF.gc +++ b/test/decompiler/reference/kernel/dgo-h_REF.gc @@ -42,5 +42,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/kernel/gcommon_REF.gc b/test/decompiler/reference/kernel/gcommon_REF.gc index bd10892553..db39a64e7a 100644 --- a/test/decompiler/reference/kernel/gcommon_REF.gc +++ b/test/decompiler/reference/kernel/gcommon_REF.gc @@ -1229,5 +1229,4 @@ ) ;; failed to figure out what this is: -(let ((v0-19 0)) - ) +0 diff --git a/test/decompiler/reference/kernel/gkernel-h_REF.gc b/test/decompiler/reference/kernel/gkernel-h_REF.gc index 6e45539b5a..ff64c03eb7 100644 --- a/test/decompiler/reference/kernel/gkernel-h_REF.gc +++ b/test/decompiler/reference/kernel/gkernel-h_REF.gc @@ -373,5 +373,4 @@ ) ;; failed to figure out what this is: -(let ((v0-23 0)) - ) +0 diff --git a/test/decompiler/reference/kernel/gkernel_REF.gc b/test/decompiler/reference/kernel/gkernel_REF.gc index 660902ee3d..10a4afeff2 100644 --- a/test/decompiler/reference/kernel/gkernel_REF.gc +++ b/test/decompiler/reference/kernel/gkernel_REF.gc @@ -80,8 +80,7 @@ (defmethod delete thread ((obj thread)) (when (= obj (-> obj process main-thread)) (break!) - (let ((v1-3 0)) - ) + 0 ) (set! (-> obj process top-thread) (-> obj previous)) (none) @@ -140,8 +139,7 @@ ) ) ) - (let ((v0-2 0)) - ) + 0 (none) ) @@ -979,8 +977,7 @@ (set! (-> obj dead-list next) (the-as dead-pool-heap-rec s5-1)) (set! (-> s5-1 0) *null-process*) ) - (let ((v0-4 0)) - ) + 0 (none) ) @@ -1057,8 +1054,7 @@ (when (nonzero? s2-0) (when (< s2-0 0) (break!) - (let ((v1-20 0)) - ) + 0 ) (shrink-heap obj s3-0) (relocate s3-0 (- s2-0)) @@ -1069,8 +1065,7 @@ ) ) ) - (let ((v0-8 0)) - ) + 0 (none) ) @@ -1123,8 +1118,7 @@ ) ) ) - (let ((v0-4 0)) - ) + 0 (none) ) @@ -1345,8 +1339,7 @@ ) (set! *listener-function* #f) (set! *enable-method-set* (+ *enable-method-set* -1)) - (let ((v1-8 0)) - ) + 0 ) (execute-process-tree *active-pool* @@ -1850,8 +1843,7 @@ (.lw ra-0 return-from-thread s7-0) (.jr ra-0) (nop!) - (let ((v1-21 0)) - ) + 0 ) ((= (-> obj status) 'initialize) (set! (-> obj status) 'dead) @@ -1859,8 +1851,7 @@ ) ) (set! (-> obj status) 'dead) - (let ((v0-7 0)) - ) + 0 ) (none) ) diff --git a/test/decompiler/reference/kernel/gstring-h_REF.gc b/test/decompiler/reference/kernel/gstring-h_REF.gc index b1454163e7..096752c8a2 100644 --- a/test/decompiler/reference/kernel/gstring-h_REF.gc +++ b/test/decompiler/reference/kernel/gstring-h_REF.gc @@ -2,6 +2,4 @@ (in-package goal) ;; failed to figure out what this is: -(let ((v0-0 0)) - ) - +0 diff --git a/test/decompiler/reference/kernel/gstring_REF.gc b/test/decompiler/reference/kernel/gstring_REF.gc index ef25db4cbf..3bb9633e07 100644 --- a/test/decompiler/reference/kernel/gstring_REF.gc +++ b/test/decompiler/reference/kernel/gstring_REF.gc @@ -248,8 +248,7 @@ (set! (-> str-ptr 0) (the-as uint char)) (set! (-> str-ptr 1) (the-as uint 0)) ) - (let ((v1-1 0)) - ) + 0 0 ) @@ -405,8 +404,7 @@ ) (set! (-> str-ptr 0) (the-as uint 0)) ) - (let ((v1-3 0)) - ) + 0 ) #f ) @@ -437,8 +435,7 @@ ) (set! (-> ptr 1) (the-as uint 0)) ) - (let ((v1-7 0)) - ) + 0 ) #f ) diff --git a/test/decompiler/reference/levels/beach/air-h_REF.gc b/test/decompiler/reference/levels/beach/air-h_REF.gc index 9e8df51b15..5a8a2f2915 100644 --- a/test/decompiler/reference/levels/beach/air-h_REF.gc +++ b/test/decompiler/reference/levels/beach/air-h_REF.gc @@ -78,5 +78,4 @@ ) ;; failed to figure out what this is: -(let ((v0-2 0)) - ) +0 diff --git a/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc b/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc index 72d8576d70..14fa435de8 100644 --- a/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy-h_REF.gc @@ -265,5 +265,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/reference/levels/common/rigid-body-h_REF.gc b/test/decompiler/reference/levels/common/rigid-body-h_REF.gc index c2ae50a59c..ae06d1e47b 100644 --- a/test/decompiler/reference/levels/common/rigid-body-h_REF.gc +++ b/test/decompiler/reference/levels/common/rigid-body-h_REF.gc @@ -102,5 +102,4 @@ ) ;; failed to figure out what this is: -(let ((v0-4 0)) - ) +0 diff --git a/test/decompiler/test_DisasmVifDecompile.cpp b/test/decompiler/test_DisasmVifDecompile.cpp index 055c86be27..b5c1332f41 100644 --- a/test/decompiler/test_DisasmVifDecompile.cpp +++ b/test/decompiler/test_DisasmVifDecompile.cpp @@ -526,157 +526,152 @@ TEST_F(FormRegressionTest, ExprDisasmVif) { " (logand sv-16 (the-as uint (-> *vif-disasm-table* v1-0 mask)))\n" " (-> *vif-disasm-table* v1-0 tag)\n" " )\n" - " (let* ((a0-12 (-> *vif-disasm-table* v1-0 print))\n" - " (v0-1 (cond\n" - " ((zero? a0-12)\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D)~%\"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " )\n" - " )\n" - " ((= a0-12 1)\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D :~s #x~X)~%\"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " (-> *vif-disasm-table* v1-0 string2)\n" - " (-> s1-0 imm)\n" - " )\n" - " )\n" - " ((= a0-12 2)\n" - " (let ((t1-1 (-> s1-0 imm)))\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D :wl ~D :cl ~D)~%\"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " (shr (shl t1-1 48) 56)\n" - " (shr (shl t1-1 56) 56)\n" - " )\n" - " )\n" - " )\n" - " ((= a0-12 3)\n" - " (set! s0-0 8)\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D :~s #x~X)~%\"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " (-> *vif-disasm-table* v1-0 string2)\n" - " (-> arg0 1)\n" - " )\n" - " )\n" - " ((= a0-12 4)\n" - " (set! s0-0 20)\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D :~s \"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " (-> *vif-disasm-table* v1-0 string2)\n" - " )\n" - " (format\n" - " arg2\n" - " \"#x~X #x~X #x~X #x~X)~%\"\n" - " (-> arg0 1)\n" - " (-> arg0 2)\n" - " (-> arg0 3)\n" - " (-> arg0 4)\n" - " )\n" - " )\n" - " ((= a0-12 5)\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D :instructions #x~D :addr #x~X)~%\"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " (-> s1-0 num)\n" - " (-> s1-0 imm)\n" - " )\n" - " )\n" - " ((= a0-12 6)\n" - " (if (-> s1-0 imm)\n" - " (set! s0-0 #x100000)\n" - " (set! s0-0 (the-as int (* (-> s1-0 imm) 16)))\n" - " )\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D :qwc #x~D)~%\"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " (-> s1-0 imm)\n" - " )\n" - " (set! sv-32 (&-> arg0 1))\n" - " (set! sv-48 0)\n" - " (while (< sv-48 (the-as int (-> s1-0 imm)))\n" - " (format\n" - " arg2\n" - " \" #x~X: #x~8x #x~8x #x~8x #x~8x~%\"\n" - " (+ (+ (* sv-48 16) 4) (the-as int arg0))\n" - " (-> sv-32 (* sv-48 4))\n" - " (-> sv-32 (+ (* sv-48 4) 1))\n" - " (-> sv-32 (+ (* sv-48 4) 2))\n" - " (-> sv-32 (+ (* sv-48 4) 3))\n" - " )\n" - " (set! sv-48 (+ sv-48 1))\n" - " )\n" - " #f\n" - " )\n" - " ((= a0-12 7)\n" - " (set!\n" - " s0-0\n" - " (the-as\n" - " int\n" - " (+\n" - " (logand\n" - " -4\n" - " (the-as\n" - " int\n" - " (+\n" - " (* (-> *vif-disasm-table* v1-0 val) (-> s1-0 num))\n" - " 3\n" - " )\n" - " )\n" - " )\n" - " 4\n" - " )\n" - " )\n" - " )\n" - " (set! sv-64 (-> s1-0 imm))\n" - " (format\n" - " arg2\n" - " \" (~s :irq ~D :num ~D :addr #x~X \"\n" - " (-> *vif-disasm-table* v1-0 string1)\n" - " (-> s1-0 irq)\n" - " (-> s1-0 num)\n" - " (shr (shl sv-64 54) 54)\n" - " )\n" - " (format\n" - " arg2\n" - " \":msk ~D :flg ~D :usn ~D [skip ~d])~%\"\n" - " (-> s1-0 msk)\n" - " (shr (shl sv-64 48) 63)\n" - " (shr (shl sv-64 49) 63)\n" - " (the-as uint s0-0)\n" - " )\n" - " (if arg3\n" - " (disasm-vif-details\n" - " arg2\n" - " (the-as (pointer uint8) arg0)\n" - " (logand sv-16 (vif-cmd cmd-mask))\n" - " (the-as int (-> s1-0 num))\n" - " )\n" - " )\n" - " )\n" - " ((= a0-12 8)\n" - " (format arg2 \" (*unknown* vif-tag #x~X)~%\" (-> s1-0 cmd))\n" - " )\n" - " )\n" + " (let ((a0-12 (-> *vif-disasm-table* v1-0 print)))\n" + " (cond\n" + " ((zero? a0-12)\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D)~%\"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " )\n" + " )\n" + " ((= a0-12 1)\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D :~s #x~X)~%\"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " (-> *vif-disasm-table* v1-0 string2)\n" + " (-> s1-0 imm)\n" + " )\n" + " )\n" + " ((= a0-12 2)\n" + " (let ((t1-1 (-> s1-0 imm)))\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D :wl ~D :cl ~D)~%\"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " (shr (shl t1-1 48) 56)\n" + " (shr (shl t1-1 56) 56)\n" + " )\n" + " )\n" + " )\n" + " ((= a0-12 3)\n" + " (set! s0-0 8)\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D :~s #x~X)~%\"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " (-> *vif-disasm-table* v1-0 string2)\n" + " (-> arg0 1)\n" + " )\n" + " )\n" + " ((= a0-12 4)\n" + " (set! s0-0 20)\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D :~s \"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " (-> *vif-disasm-table* v1-0 string2)\n" + " )\n" + " (format\n" + " arg2\n" + " \"#x~X #x~X #x~X #x~X)~%\"\n" + " (-> arg0 1)\n" + " (-> arg0 2)\n" + " (-> arg0 3)\n" + " (-> arg0 4)\n" + " )\n" + " )\n" + " ((= a0-12 5)\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D :instructions #x~D :addr #x~X)~%\"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " (-> s1-0 num)\n" + " (-> s1-0 imm)\n" + " )\n" + " )\n" + " ((= a0-12 6)\n" + " (if (-> s1-0 imm)\n" + " (set! s0-0 #x100000)\n" + " (set! s0-0 (the-as int (* (-> s1-0 imm) 16)))\n" + " )\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D :qwc #x~D)~%\"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " (-> s1-0 imm)\n" + " )\n" + " (set! sv-32 (&-> arg0 1))\n" + " (set! sv-48 0)\n" + " (while (< sv-48 (the-as int (-> s1-0 imm)))\n" + " (format\n" + " arg2\n" + " \" #x~X: #x~8x #x~8x #x~8x #x~8x~%\"\n" + " (+ (+ (* sv-48 16) 4) (the-as int arg0))\n" + " (-> sv-32 (* sv-48 4))\n" + " (-> sv-32 (+ (* sv-48 4) 1))\n" + " (-> sv-32 (+ (* sv-48 4) 2))\n" + " (-> sv-32 (+ (* sv-48 4) 3))\n" + " )\n" + " (set! sv-48 (+ sv-48 1))\n" + " )\n" + " #f\n" + " )\n" + " ((= a0-12 7)\n" + " (set!\n" + " s0-0\n" + " (the-as\n" + " int\n" + " (+\n" + " (logand\n" + " -4\n" + " (the-as\n" + " int\n" + " (+ (* (-> *vif-disasm-table* v1-0 val) (-> s1-0 num)) 3)\n" " )\n" " )\n" + " 4\n" + " )\n" + " )\n" + " )\n" + " (set! sv-64 (-> s1-0 imm))\n" + " (format\n" + " arg2\n" + " \" (~s :irq ~D :num ~D :addr #x~X \"\n" + " (-> *vif-disasm-table* v1-0 string1)\n" + " (-> s1-0 irq)\n" + " (-> s1-0 num)\n" + " (shr (shl sv-64 54) 54)\n" + " )\n" + " (format\n" + " arg2\n" + " \":msk ~D :flg ~D :usn ~D [skip ~d])~%\"\n" + " (-> s1-0 msk)\n" + " (shr (shl sv-64 48) 63)\n" + " (shr (shl sv-64 49) 63)\n" + " (the-as uint s0-0)\n" + " )\n" + " (if arg3\n" + " (disasm-vif-details\n" + " arg2\n" + " (the-as (pointer uint8) arg0)\n" + " (logand sv-16 (vif-cmd cmd-mask))\n" + " (the-as int (-> s1-0 num))\n" + " )\n" + " )\n" + " )\n" + " ((= a0-12 8)\n" + " (format arg2 \" (*unknown* vif-tag #x~X)~%\" (-> s1-0 cmd))\n" + " )\n" + " )\n" " )\n" " (set! v1-0 (-> *vif-disasm-table* length))\n" " )\n" diff --git a/test/decompiler/test_FormExpressionBuild.cpp b/test/decompiler/test_FormExpressionBuild.cpp index 70226549cb..9f7d44fbd9 100644 --- a/test/decompiler/test_FormExpressionBuild.cpp +++ b/test/decompiler/test_FormExpressionBuild.cpp @@ -2726,8 +2726,7 @@ TEST_F(FormRegressionTest, StripStripTrailingWhitespace) { " )\n" " (set! (-> v1-6 1) (the-as uint 0))\n" " )\n" - " (let ((v1-7 0))\n" - " )\n" + " 0\n" " )\n" " #f\n" " )"; diff --git a/test/decompiler/test_FormExpressionBuild2.cpp b/test/decompiler/test_FormExpressionBuild2.cpp index c77e4d3844..be07d49dbd 100644 --- a/test/decompiler/test_FormExpressionBuild2.cpp +++ b/test/decompiler/test_FormExpressionBuild2.cpp @@ -649,8 +649,7 @@ TEST_F(FormRegressionTest, DmaSyncCrash) { " (cond\n" " ((zero? v1-0)\n" " (crash!)\n" - " (let ((a1-0 0))\n" - " )\n" + " 0\n" " )\n" " (else\n" " (+! v1-0 -1)\n" @@ -1242,8 +1241,7 @@ TEST_F(FormRegressionTest, MakeSqrtTable) { " )\n" " )\n" " (format #t \"};~%\")\n" - " (let ((v0-3 0))\n" - " )\n" + " 0\n" " (none)\n" " )"; test_with_expr( diff --git a/test/decompiler/test_FormExpressionBuildLong.cpp b/test/decompiler/test_FormExpressionBuildLong.cpp index 5459e0b926..b116a91fdf 100644 --- a/test/decompiler/test_FormExpressionBuildLong.cpp +++ b/test/decompiler/test_FormExpressionBuildLong.cpp @@ -2813,8 +2813,7 @@ TEST_F(FormRegressionTest, Method19ResTag) { " (= arg1 'task)\n" " )\n" " (crash!)\n" - " (let ((v1-9 0))\n" - " )\n" + " 0\n" " )\n" " (if (or (not arg0) (zero? arg0) (<= (-> arg0 length) 0))\n" " (return -1)\n" diff --git a/test/decompiler/test_gkernel_decomp.cpp b/test/decompiler/test_gkernel_decomp.cpp index ff881ff3cb..e1a65fa5fd 100644 --- a/test/decompiler/test_gkernel_decomp.cpp +++ b/test/decompiler/test_gkernel_decomp.cpp @@ -132,7 +132,10 @@ TEST_F(FormRegressionTest, ExprMethod1Thread) { std::string type = "(function thread none)"; std::string expected = "(begin\n" - " (when (= arg0 (-> arg0 process main-thread)) (break!) (let ((v1-3 0))))\n" + " (when (= arg0 (-> arg0 process main-thread))\n" + " (break!)\n" + " 0\n" + " )\n" " (set! (-> arg0 process top-thread) (-> arg0 previous))\n" " (none)\n" " )"; @@ -286,8 +289,7 @@ TEST_F(FormRegressionTest, ExprMethod9Thread) { " )\n" " )\n" " )\n" - " (let ((v0-2 0))\n" - " )\n" + " 0\n" " (none)\n" " )"; test_with_expr(func, type, expected, false, "", {{"L342", "1 ~A ~%"}, {"L341", "2 ~A ~%"}}); @@ -2242,8 +2244,7 @@ TEST_F(FormRegressionTest, ExprMethod15DeadPoolHeap) { " (set! (-> arg0 dead-list next) (the-as dead-pool-heap-rec s5-1))\n" " (set! (-> s5-1 0) *null-process*)\n" " )\n" - " (let ((v0-4 0))\n" - " )\n" + " 0\n" " (none)\n" " )"; test_with_expr(func, type, expected, false, "", @@ -2607,8 +2608,7 @@ TEST_F(FormRegressionTest, ExprMethod16DeadPoolHeap) { " (when (nonzero? s2-0)\n" " (when (< s2-0 0)\n" " (break!)\n" - " (let ((v1-20 0))\n" - " )\n" + " 0\n" " )\n" " (shrink-heap arg0 s3-0)\n" " (relocate s3-0 (- s2-0))\n" @@ -2619,8 +2619,7 @@ TEST_F(FormRegressionTest, ExprMethod16DeadPoolHeap) { " )\n" " )\n" " )\n" - " (let ((v0-8 0))\n" - " )\n" + " 0\n" " (none)\n" " )"; test_with_expr(func, type, expected, false, "", {{"L296", "~3LLow Actor Memory~%~0L"}}); @@ -2817,8 +2816,7 @@ TEST_F(FormRegressionTest, ExprMethod18DeadPoolHeap) { " )\n" " )\n" " )\n" - " (let ((v0-4 0))\n" - " )\n" + " 0\n" " (none)\n" " )"; test_with_expr(func, type, expected);