diff --git a/common/goos/PrettyPrinter2.cpp b/common/goos/PrettyPrinter2.cpp index 6f8cb06f4f..94387073b5 100644 --- a/common/goos/PrettyPrinter2.cpp +++ b/common/goos/PrettyPrinter2.cpp @@ -237,9 +237,34 @@ void break_list(Node* node) { node->top_line_count = 1; const std::unordered_set sameline_splitters = { - "if", "<", ">", "<=", ">=", "set!", "=", "!=", "+", - "-", "*", "/", "the", "->", "and", "or", "logand", "logior", - "logxor", "+!", "*!", "logtest?", "not", "zero?", "nonzero?"}; + "if", + "<", + ">", + "<=", + ">=", + "set!", + "=", + "!=", + "+", + "-", + "*", + "/", + "the", + "->", + "and", + "or", + "logand", + "logior", + "logxor", + "+!", + "*!", + "logtest?", + "not", + "zero?", + "nonzero?", + "dma-buffer-add-gs-set", + "dma-buffer-add-gs-set-flusha", + }; if (node->child_nodes.at(0).kind == Node::Kind::LIST) { // ((foo diff --git a/decompiler/IR2/AtomicOpForm.cpp b/decompiler/IR2/AtomicOpForm.cpp index 45bad30869..e4c860d639 100644 --- a/decompiler/IR2/AtomicOpForm.cpp +++ b/decompiler/IR2/AtomicOpForm.cpp @@ -475,11 +475,6 @@ FormElement* StoreOp::get_as_form(FormPool& pool, const Env& env) const { } } } - // print warning about failed store, but only if decompilation passes without any major errors - // TODO move this elsewhere! they CAN be deleted later and this would cause false positives. - if (!env.func->warnings.has_errors()) { - env.func->warnings.error("Failed store: {} at op {}", to_string(env), m_my_idx); - } return pool.alloc_element(this); } diff --git a/decompiler/IR2/Form.cpp b/decompiler/IR2/Form.cpp index 4567fd7ef9..51ede30fb0 100644 --- a/decompiler/IR2/Form.cpp +++ b/decompiler/IR2/Form.cpp @@ -2964,46 +2964,36 @@ goos::Object DefstateElement::to_form_internal(const Env& env) const { WithDmaBufferAddBucketElement::WithDmaBufferAddBucketElement(RegisterAccess dma_buf, Form* dma_buf_val, Form* bucket, - const std::vector& body) + Form* body) : m_dma_buf(dma_buf), m_dma_buf_val(dma_buf_val), m_bucket(bucket), m_body(body) { m_dma_buf_val->parent_element = this; m_bucket->parent_element = this; - for (auto& e : m_body) { - e->parent_form = nullptr; - } + m_body->parent_element = this; } void WithDmaBufferAddBucketElement::apply(const std::function& f) { f(this); m_dma_buf_val->apply(f); m_bucket->apply(f); - for (auto& e : m_body) { - e->apply(f); - } + m_body->apply(f); } void WithDmaBufferAddBucketElement::apply_form(const std::function& f) { m_dma_buf_val->apply_form(f); m_bucket->apply_form(f); - for (auto& e : m_body) { - e->apply_form(f); - } + m_body->apply_form(f); } void WithDmaBufferAddBucketElement::collect_vars(RegAccessSet& vars, bool recursive) const { m_dma_buf_val->collect_vars(vars, recursive); m_bucket->collect_vars(vars, recursive); - for (auto& e : m_body) { - e->collect_vars(vars, recursive); - } + m_body->collect_vars(vars, recursive); } void WithDmaBufferAddBucketElement::get_modified_regs(RegSet& regs) const { m_dma_buf_val->get_modified_regs(regs); m_bucket->get_modified_regs(regs); - for (auto& e : m_body) { - e->get_modified_regs(regs); - } + m_body->get_modified_regs(regs); } goos::Object WithDmaBufferAddBucketElement::to_form_internal(const Env& env) const { @@ -3013,9 +3003,7 @@ goos::Object WithDmaBufferAddBucketElement::to_form_internal(const Env& env) con {pretty_print::build_list({pretty_print::to_symbol(env.get_variable_name(m_dma_buf)), m_dma_buf_val->to_form(env)}), m_bucket->to_form(env)})); - for (auto& e : m_body) { - forms.push_back(e->to_form(env)); - } + m_body->inline_forms(forms, env); return pretty_print::build_list(forms); } diff --git a/decompiler/IR2/Form.h b/decompiler/IR2/Form.h index e3a136db82..f13118a006 100644 --- a/decompiler/IR2/Form.h +++ b/decompiler/IR2/Form.h @@ -1811,7 +1811,7 @@ class WithDmaBufferAddBucketElement : public FormElement { WithDmaBufferAddBucketElement(RegisterAccess dma_buf, Form* dma_buf_val, Form* bucket, - const std::vector& body); + Form* body); goos::Object to_form_internal(const Env& env) const override; void apply(const std::function& f) override; @@ -1829,7 +1829,7 @@ class WithDmaBufferAddBucketElement : public FormElement { RegisterAccess m_dma_buf; Form* m_dma_buf_val; Form* m_bucket; - std::vector m_body; + Form* m_body; }; class ResLumpMacroElement : public FormElement { diff --git a/decompiler/ObjectFile/ObjectFileDB.h b/decompiler/ObjectFile/ObjectFileDB.h index 8c14c560b5..33823017c8 100644 --- a/decompiler/ObjectFile/ObjectFileDB.h +++ b/decompiler/ObjectFile/ObjectFileDB.h @@ -77,11 +77,12 @@ struct LetRewriteStats { int rand_float_gen = 0; int set_let = 0; int with_dma_buf_add_bucket = 0; + int dma_buffer_add_gs_set = 0; int total() const { return dotimes + countdown + abs + abs2 + unused + ja + case_no_else + case_with_else + set_vector + set_vector2 + send_event + font_context_meth + proc_new + attack_info + - vector_dot + rand_float_gen + set_let + with_dma_buf_add_bucket; + vector_dot + rand_float_gen + set_let + with_dma_buf_add_bucket + dma_buffer_add_gs_set; } std::string print() const { @@ -106,6 +107,7 @@ struct LetRewriteStats { out += fmt::format(" rand_float_gen: {}\n", rand_float_gen); out += fmt::format(" set_let: {}\n", set_let); out += fmt::format(" with_dma_buf_add_bucket: {}\n", with_dma_buf_add_bucket); + out += fmt::format(" dma_buffer_add_gs_set: {}\n", dma_buffer_add_gs_set); return out; } @@ -201,6 +203,7 @@ class ObjectFileDB { // void ir2_store_current_forms(int seg); void ir2_build_expressions(int seg, const Config& config, ObjectFileData& data); void ir2_insert_lets(int seg, ObjectFileData& data); + void ir2_add_store_errors(int seg, ObjectFileData& data); void ir2_rewrite_inline_asm_instructions(int seg, ObjectFileData& data); void ir2_insert_anonymous_functions(int seg, ObjectFileData& data); void ir2_symbol_definition_map(ObjectFileData& data); diff --git a/decompiler/ObjectFile/ObjectFileDB_IR2.cpp b/decompiler/ObjectFile/ObjectFileDB_IR2.cpp index 9da3ec59b2..2ced7e9a75 100644 --- a/decompiler/ObjectFile/ObjectFileDB_IR2.cpp +++ b/decompiler/ObjectFile/ObjectFileDB_IR2.cpp @@ -175,6 +175,8 @@ void ObjectFileDB::ir2_do_segment_analysis_phase2(int seg, ir2_rewrite_inline_asm_instructions(seg, data); ir2_insert_lets(seg, data); + + ir2_add_store_errors(seg, data); } void ObjectFileDB::ir2_setup_labels(const Config& config, ObjectFileData& data) { @@ -717,6 +719,22 @@ void ObjectFileDB::ir2_insert_lets(int seg, ObjectFileData& data) { }); } +void ObjectFileDB::ir2_add_store_errors(int seg, ObjectFileData& data) { + for_each_function_in_seg_in_obj(seg, data, [&](Function& func) { + if (func.ir2.expressions_succeeded && !func.warnings.has_errors()) { + // print warning about failed store, but only if decompilation passes without any major + // errors + func.ir2.top_form->apply([&](FormElement* f) { + auto as_store = dynamic_cast(f); + if (as_store) { + func.warnings.error("Failed store: {} at op {}", as_store->to_string(func.ir2.env), + as_store->op()->op_id()); + } + }); + } + }); +} + void ObjectFileDB::ir2_rewrite_inline_asm_instructions(int seg, ObjectFileData& data) { for_each_function_in_seg_in_obj(seg, data, [&](Function& func) { (void)data; diff --git a/decompiler/analysis/insert_lets.cpp b/decompiler/analysis/insert_lets.cpp index 9feae32f29..a23c3b444f 100644 --- a/decompiler/analysis/insert_lets.cpp +++ b/decompiler/analysis/insert_lets.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "common/log/log.h" #include "common/util/Assert.h" @@ -2015,13 +2016,15 @@ FormElement* rewrite_multi_let_as_vector_dot(LetElement* in, const Env& env, For return in; } +// matches (-> base) +const static auto dma_buf_base_matcher = + Matcher::deref(Matcher::any_reg(0), false, {DerefTokenMatcher::string("base")}); + FormElement* rewrite_with_dma_buf_add_bucket(LetElement* in, const Env& env, FormPool& pool) { if (in->entries().size() != 2) { return nullptr; } - static auto dma_buf_base_matcher = - Matcher::deref(Matcher::any_reg(0), false, {DerefTokenMatcher::string("base")}); // dma buffer part can be anything, really. auto buf_reg = in->entries().at(0).dest; auto buf_dst = env.get_variable_name(buf_reg); @@ -2154,7 +2157,8 @@ FormElement* rewrite_with_dma_buf_add_bucket(LetElement* in, const Env& env, For } auto elt = pool.alloc_element( - buf_reg, buf_src, mr_bucket_add_tag_func.maps.forms.at(1), body); + buf_reg, buf_src, mr_bucket_add_tag_func.maps.forms.at(1), + pool.alloc_sequence_form(nullptr, body)); elt->parent_form = in->parent_form; return elt; } @@ -2194,6 +2198,470 @@ FormElement* rewrite_multi_let(LetElement* in, return in; } +FormElement* rewrite_dma_buffer_add_gs_set(const std::vector& in, + const Env& env, + FormPool& pool) { + auto let0 = in.at(0); + auto let1 = in.at(1); + auto let2 = in.at(2); + + // there are three lets and they all have the same format for the entries + if (let0->entries().size() != 2 || let1->entries().size() != 2 || let2->entries().size() != 2 || + let0->body()->size() != 4 || let1->body()->size() != 3) { + return nullptr; + } + + // (let* ((v1-0 arg0) + // (a0-2 (-> v1-0 base)) + // ) + auto buf = let0->entries().at(0).src; + if (auto temp = buf->to_form(env); temp != let1->entries().at(0).src->to_form(env) || + temp != let2->entries().at(0).src->to_form(env)) { + lg::error("rewrite_dma_buffer_add_gs_set: dma buffer mismatch"); + return nullptr; + } + auto mr_buf_base0 = match(dma_buf_base_matcher, let0->entries().at(1).src); + auto mr_buf_base1 = match(dma_buf_base_matcher, let1->entries().at(1).src); + auto mr_buf_base2 = match(dma_buf_base_matcher, let2->entries().at(1).src); + if (!mr_buf_base0.matched || !mr_buf_base1.matched || !mr_buf_base2.matched) { + lg::error("rewrite_dma_buffer_add_gs_set: bad (-> dma-buf base) matches {} {} {}", + mr_buf_base0.matched, mr_buf_base1.matched, mr_buf_base2.matched); + return nullptr; + } + + // LET DMATAG + // (set! (-> (the-as (pointer int64) a0-2)) #x10000007) + // (s.w! (+ a0-2 8) 0) + // (let ((a1-2 #x50000007)) + // (s.w! (+ a0-2 12) a1-2) + // ) + // (set! (-> v1-0 base) (&+ a0-2 16)) + u16 dma_qwc = 0; + bool flusha = false; + auto check_vifcode_set = [&](StoreElement* store, const std::string& varname, int size, + int addr) { + return store->op()->kind() == StoreOp::Kind::INTEGER && store->op()->store_size() == size && + // store->op()->value().is_int(0) && + store->op()->addr().kind() == SimpleExpression::Kind::ADD && + store->op()->addr().args() == 2 && store->op()->addr().get_arg(0).is_var() && + store->op()->addr().get_arg(1).is_int(addr) && + var_name_equal(env, varname, store->op()->addr().get_arg(0).var()); + }; + const auto match_buf_push = [&env](FormElement* elt, const std::string& reg_buf, + const std::string& reg_base, int amt) { + auto mr = match(Matcher::set(Matcher::deref(Matcher::any_reg(0), false, + {DerefTokenMatcher::string("base")}), + Matcher::op_fixed(FixedOperatorKind::ADDITION_PTR, + {Matcher::any_reg(1), Matcher::integer(amt)})), + elt); + return mr.matched && var_name_equal(env, reg_buf, mr.maps.regs.at(0)) && + var_name_equal(env, reg_base, mr.maps.regs.at(1)); + }; + { + auto dmatag_buf = env.get_variable_name(let0->entries().at(0).dest); + auto dmatag_ptr = env.get_variable_name(let0->entries().at(1).dest); + auto set_dmatag_hdr = dynamic_cast(let0->body()->at(0)); + auto set_dmatag_vif0 = dynamic_cast(let0->body()->at(1)); + auto let_dmatag_vif0 = dynamic_cast(let0->body()->at(1)); + auto let_dmatag_vif1 = dynamic_cast(let0->body()->at(2)); + auto set_dmatag_push = dynamic_cast(let0->body()->at(3)); + if (!let_dmatag_vif0 && !set_dmatag_vif0) { + lg::error("rewrite_dma_buffer_add_gs_set: bad vif0"); + return nullptr; + } + u32 vif0 = 0; + if (let_dmatag_vif0 && let_dmatag_vif0->entries().size() == 1 && + let_dmatag_vif0->body()->size() == 1) { + auto vif0_elt = + let_dmatag_vif0->entries().at(0).src->try_as_element(); + if (!vif0_elt || !vif0_elt->expr().is_identity() || !vif0_elt->expr().get_arg(0).is_int()) { + lg::error("rewrite_dma_buffer_add_gs_set: bad vif0 let"); + return nullptr; + } + vif0 = vif0_elt->expr().get_arg(0).get_int(); + set_dmatag_vif0 = dynamic_cast(let_dmatag_vif0->body()->at(0)); + } else { + if (!check_vifcode_set(set_dmatag_vif0, dmatag_ptr, 4, 8)) { + lg::error("rewrite_dma_buffer_add_gs_set: bad vif0 set"); + return nullptr; + } + vif0 = set_dmatag_vif0->op()->value().get_int(); + } + + if (!set_dmatag_hdr || !let_dmatag_vif1 || !set_dmatag_push || + let_dmatag_vif1->entries().size() != 1 || let_dmatag_vif1->body()->size() != 1) { + lg::error("rewrite_dma_buffer_add_gs_set: bad vif1 let"); + return nullptr; + } + auto set_dmatag_vif1 = dynamic_cast(let_dmatag_vif1->body()->at(0)); + if (!set_dmatag_vif1) { + lg::error("rewrite_dma_buffer_add_gs_set: bad vif1 set"); + return nullptr; + } + // check dmatag now + auto mr_dmatag_hdr = + match(Matcher::set( + Matcher::deref(Matcher::cast("(pointer int64)", Matcher::any_reg(0)), false, {}), + Matcher::any_integer(1)), + set_dmatag_hdr); + if (!mr_dmatag_hdr.matched || !var_name_equal(env, dmatag_ptr, mr_dmatag_hdr.maps.regs.at(0))) { + lg::error("rewrite_dma_buffer_add_gs_set: bad dmatag set"); + return nullptr; + } + dma_qwc = mr_dmatag_hdr.maps.ints.at(1) & 0xffff; + if (((mr_dmatag_hdr.maps.ints.at(1) >> 28) & 0x7) != 1 || + (mr_dmatag_hdr.maps.ints.at(1) & ~0x7000ffff)) { + lg::error("rewrite_dma_buffer_add_gs_set: bad dmatag"); + return nullptr; + } + if (!(dma_qwc >= 1 && dma_qwc <= 17)) { + lg::error("rewrite_dma_buffer_add_gs_set: bad qwc {}", dma_qwc); + return nullptr; + } + // check vifcode + flusha = vif0 == 19ULL << 24; + auto vif1_elt = let_dmatag_vif1->entries().at(0).src->try_as_element(); + if (!check_vifcode_set(set_dmatag_vif1, dmatag_ptr, 4, 12) || (vif0 && !flusha) || + !set_dmatag_vif1->op()->value().is_var() || !vif1_elt || !vif1_elt->expr().is_identity() || + !vif1_elt->expr().get_arg(0).is_int()) { + lg::error("rewrite_dma_buffer_add_gs_set: bad vif1"); + return nullptr; + } + u32 vif1 = vif1_elt->expr().get_arg(0).get_int(); + if (((vif1 >> 24) & 0x7f) != 80 || (vif1 & ~0x7f00ffff) || ((vif1 & 0xffff) != dma_qwc)) { + lg::error("rewrite_dma_buffer_add_gs_set: bad vif1 vifcode"); + return nullptr; + } + + // check dma buffer base set + if (!match_buf_push(set_dmatag_push, dmatag_buf, dmatag_ptr, 16)) { + lg::error("rewrite_dma_buffer_add_gs_set: dma base set 1"); + return nullptr; + } + } + + // LET GIFTAG + // (let* ((v1-1 arg0) + // (a0-4 (-> v1-1 base)) + // ) + // (set! (-> (the-as (pointer uint64) a0-4)) (make-u128 0 (the-as uint #x6000000000008001))) + // (let ((a1-6 (the-as uint #xeeeeeeeeeeeeeeee))) + // (s.d! (+ a0-4 8) a1-6) + // ) + // (set! (-> v1-1 base) (&+ a0-4 16)) + // ) + { + auto giftag_buf = env.get_variable_name(let1->entries().at(0).dest); + auto giftag_ptr = env.get_variable_name(let1->entries().at(1).dest); + auto set_giftag_hdr = dynamic_cast(let1->body()->at(0)); + auto let_giftag_regs = dynamic_cast(let1->body()->at(1)); + auto set_giftag_push = dynamic_cast(let1->body()->at(2)); + if (!set_giftag_hdr || !let_giftag_regs || !set_giftag_push || + let_giftag_regs->entries().size() != 1 || let_giftag_regs->body()->size() != 1) { + return nullptr; + } + auto set_giftag_regs = dynamic_cast(let_giftag_regs->body()->at(0)); + if (!set_giftag_regs) { + return nullptr; + } + // check giftag now + auto mr_giftag_hdr = + match(Matcher::set( + Matcher::deref(Matcher::cast("(pointer uint64)", Matcher::any_reg(0)), false, {}), + Matcher::op_fixed( + FixedOperatorKind::PCPYLD, + {Matcher::integer(0), Matcher::cast("uint", Matcher::any_integer(1))})), + set_giftag_hdr); + if (!mr_giftag_hdr.matched || (mr_giftag_hdr.maps.ints.at(1) & 0x0fffffffffffffff) != 0x8001 || + ((mr_giftag_hdr.maps.ints.at(1) >> 60) & 0xf) != dma_qwc - 1 || + !var_name_equal(env, giftag_ptr, mr_giftag_hdr.maps.regs.at(0))) { + return nullptr; + } + auto giftag_regs_elt = let_giftag_regs->entries().at(0).src->try_as_element(); + if (!check_vifcode_set(set_giftag_regs, giftag_ptr, 8, 8) || !giftag_regs_elt) { + return nullptr; + } + auto giftag_regs_atom = giftag_regs_elt->source()->try_as_element(); + if (!giftag_regs_atom || !giftag_regs_atom->atom().is_int(0xeeeeeeeeeeeeeeee)) { + return nullptr; + } + // check dma buffer base set + if (!match_buf_push(set_giftag_push, giftag_buf, giftag_ptr, 16)) { + lg::error("rewrite_dma_buffer_add_gs_set: dma base set 2"); + return nullptr; + } + } + + // start building args + std::vector args; + args.push_back(buf); + + // LET GS REGS + // (let* ((v1-2 arg0) + // (a0-6 (-> v1-2 base)) + // ) + // (set! (-> (the-as (pointer int64) a0-6)) #x33001) + // (let ((a1-8 71)) + // (s.d! (+ a0-6 8) a1-8) + // ) + // (s.d! (+ a0-6 16) 0) + // (let ((a1-9 66)) + // (s.d! (+ a0-6 24) a1-9) + // ) + // (let ((a1-10 (the-as uint #x664023300))) + // (s.d! (+ a0-6 32) a1-10) + // ) + // (let ((a1-11 6)) + // (s.d! (+ a0-6 40) a1-11) + // ) + // (let ((a1-12 96)) + // (s.d! (+ a0-6 48) a1-12) + // ) + // (let ((a1-13 20)) + // (s.d! (+ a0-6 56) a1-13) + // ) + // (let ((a1-14 5)) + // (s.d! (+ a0-6 64) a1-14) + // ) + // (let ((a1-15 8)) + // (s.d! (+ a0-6 72) a1-15) + // ) + // (s.d! (+ a0-6 80) 0) + // (let ((a1-16 63)) + // (s.d! (+ a0-6 88) a1-16) + // ) + // (set! (-> v1-2 base) (&+ a0-6 96)) + // ) + { + auto gsregs_buf = env.get_variable_name(let2->entries().at(0).dest); + auto gsregs_ptr = env.get_variable_name(let2->entries().at(1).dest); + auto set_gsregs_push = + dynamic_cast(let2->body()->at(let2->body()->size() - 1)); + // check dma buffer base set + if (let2->body()->size() != (dma_qwc - 1) * 2 + 1 || + !match_buf_push(set_gsregs_push, gsregs_buf, gsregs_ptr, 16 * (dma_qwc - 1))) { + lg::error("rewrite_dma_buffer_add_gs_set: dma base set 3"); + return nullptr; + } + bool error = false; + auto get_int_from_form = [&](FormElement* elt, const std::string& ptr_name, int offset) { + auto as_set = dynamic_cast(elt); + if (as_set) { + auto mr_set = match( + Matcher::set( + Matcher::deref( + Matcher::match_or({Matcher::cast("(pointer int64)", Matcher::any_reg(0)), + Matcher::cast("(pointer uint64)", Matcher::any_reg(0))}), + false, {}), + Matcher::any_integer(1)), + as_set); + if (!mr_set.matched || !var_name_equal(env, gsregs_ptr, mr_set.maps.regs.at(0))) { + error = true; + return (s64)0; + } + return mr_set.maps.ints.at(1); + } + auto as_store = dynamic_cast(elt); + if (as_store) { + if (!as_store->op()->value().is_int() || + !check_vifcode_set(as_store, ptr_name, 8, offset)) { + error = true; + return (s64)0; + } + return as_store->op()->value().get_int(); + } + auto as_let = dynamic_cast(elt); + if (as_let) { + if (as_let->entries().size() != 1 || as_let->body()->size() != 1) { + error = true; + return (s64)0; + } + auto store_in_let = dynamic_cast(as_let->body()->at(0)); + if (!store_in_let || !check_vifcode_set(store_in_let, ptr_name, 8, offset) || + !store_in_let->op()->value().is_var() || + !var_name_equal(env, env.get_variable_name(as_let->entries().at(0).dest), + store_in_let->op()->value().var())) { + error = true; + return (s64)0; + } + auto val_as_cast = as_let->entries().at(0).src->try_as_element(); + if (val_as_cast) { + auto as_atom = val_as_cast->source()->try_as_element(); + if (!as_atom || !as_atom->atom().is_int()) { + error = true; + return (s64)0; + } + return as_atom->atom().get_int(); + } + auto val_as_expr = as_let->entries().at(0).src->try_as_element(); + if (val_as_expr) { + if (!val_as_expr->expr().is_identity() || !val_as_expr->expr().get_arg(0).is_int()) { + error = true; + return (s64)0; + } + return val_as_expr->expr().get_arg(0).get_int(); + } + } + error = true; + return (s64)0; + }; + auto get_src_form = [&](FormPool& pool, FormElement* elt, const std::string& ptr_name, + int offset) -> Form* { + auto as_set = dynamic_cast(elt); + if (as_set) { + auto mr_set = match( + Matcher::set( + Matcher::deref( + Matcher::match_or({Matcher::cast("(pointer int64)", Matcher::any_reg(0)), + Matcher::cast("(pointer uint64)", Matcher::any_reg(0))}), + false, {}), + Matcher::any()), + as_set); + if (!mr_set.matched || !var_name_equal(env, gsregs_ptr, mr_set.maps.regs.at(0))) { + return nullptr; + } + return as_set->src(); + } + auto as_store = dynamic_cast(elt); + if (as_store) { + if (!check_vifcode_set(as_store, ptr_name, 8, offset)) { + return nullptr; + } + return pool.form(as_store->op()->value()); + } + auto as_let = dynamic_cast(elt); + if (as_let) { + if (as_let->entries().size() != 1 || as_let->body()->size() != 1) { + return nullptr; + } + auto store_in_let = dynamic_cast(as_let->body()->at(0)); + if (!store_in_let || !check_vifcode_set(store_in_let, ptr_name, 8, offset) || + !store_in_let->op()->value().is_var() || + !var_name_equal(env, env.get_variable_name(as_let->entries().at(0).dest), + store_in_let->op()->value().var())) { + return nullptr; + } + return as_let->entries().at(0).src; + } + return nullptr; + }; + const static std::unordered_map reg_id_to_def_map = { + // enum name, struct name + {"prim", "gs-prim"}, + {"st", "gs-st"}, + {"uv", "gs-uv"}, + {"rgbaq", "gs-rgbaq"}, + {"fog", "gs-fog"}, + {"fogcol", "gs-fogcol"}, + {"miptbp1-1", "gs-miptbp"}, + {"miptbp1-2", "gs-miptbp"}, + {"miptbp2-1", "gs-miptbp"}, + {"miptbp2-2", "gs-miptbp"}, + {"texclut", "gs-texclut"}, + {"tex0-1", "gs-tex0"}, + {"tex0-2", "gs-tex0"}, + {"tex1-1", "gs-tex1"}, + {"tex1-2", "gs-tex1"}, + {"clamp-1", "gs-clamp"}, + {"clamp-2", "gs-clamp"}, + {"texa", "gs-texa"}, + {"xyoffset-1", "gs-xy-offset"}, + {"xyoffset-2", "gs-xy-offset"}, + {"prmodecont", "gs-prmode-cont"}, + {"clamp-1", "gs-clamp"}, + {"clamp-2", "gs-clamp"}, + {"test-1", "gs-test"}, + {"test-2", "gs-test"}, + {"frame-1", "gs-frame"}, + {"frame-2", "gs-frame"}, + {"scissor-1", "gs-scissor"}, + {"scissor-2", "gs-scissor"}, + {"zbuf-1", "gs-zbuf"}, + {"zbuf-2", "gs-zbuf"}, + {"alpha-1", "gs-alpha"}, + {"alpha-2", "gs-alpha"}, + {"dthe", "gs-dthe"}, + {"colclamp", "gs-color-clamp"}, + {"xyzf3", "gs-xyzf"}, + {"xyz3", "gs-xyz"}, + {"bitbltbuf", "gs-bitbltbuf"}, + {"trxpos", "gs-trxpos"}, + {"trxreg", "gs-trxreg"}, + {"trxdir", "gs-trxdir"}, + }; + const static std::unordered_set reg_id_to_int_map = { + "texflush", + "pabe", + "fba-1", + "fba-2", + }; + for (int i = 0; i < let2->body()->size() - 1 && !error; i += 2) { + auto reg_val = get_int_from_form(let2->body()->at(i), gsregs_ptr, i * 8); + bool bad_val = error; + error = false; + auto reg_id = get_int_from_form(let2->body()->at(i + 1), gsregs_ptr, i * 8 + 8); + auto reg_name = + decompiler::decompile_int_enum_from_int(TypeSpec("gs-reg"), env.dts->ts, reg_id); + auto name_head = GenericOperator::make_function(pool.form(reg_name)); + const auto& it = reg_id_to_def_map.find(reg_name); + if (error) { + } else if (bad_val) { + auto reg_val_form = get_src_form(pool, let2->body()->at(i), gsregs_ptr, i * 8); + if (reg_val_form) { + if (it != reg_id_to_def_map.end()) { + auto spec = TypeSpec(it->second); + auto as_bitfield = decompiler::cast_to_bitfield( + dynamic_cast(env.dts->ts.lookup_type(spec)), spec, pool, env, + reg_val_form); + auto as_cast = as_bitfield->try_as_element(); + args.push_back( + pool.form(name_head, as_cast ? as_cast->source() : as_bitfield)); + } else { + args.push_back(pool.form(name_head, reg_val_form)); + } + } else { + error = true; + } + } else if (it != reg_id_to_def_map.end()) { + auto spec = TypeSpec(it->second); + args.push_back(pool.form( + name_head, + pool.form( + spec, decompiler::decompile_bitfield_from_int(spec, env.dts->ts, reg_val), pool))); + } else if (const auto& it = reg_id_to_int_map.find(reg_name); it != reg_id_to_int_map.end()) { + args.push_back(pool.form( + name_head, pool.form(SimpleAtom::make_int_constant(reg_val)))); + } else { + lg::error("unhandled gs-reg {}", reg_name); + error = true; + } + } + if (error) { + return nullptr; + } + } + + return pool.alloc_element( + GenericOperator::make_function(pool.form( + flusha ? "dma-buffer-add-gs-set-flusha" : "dma-buffer-add-gs-set")), + args); +} + +FormElement* rewrite_let_sequence(const std::vector& in, + const Env& env, + FormPool& pool, + LetRewriteStats& stats) { + if (in.size() == 3) { + auto as_dma_buffer_add_gs_set = rewrite_dma_buffer_add_gs_set(in, env, pool); + if (as_dma_buffer_add_gs_set) { + stats.dma_buffer_add_gs_set++; + return as_dma_buffer_add_gs_set; + } + } + + return nullptr; +} + Form* insert_cast_for_let(RegisterAccess dst, const TypeSpec& src_type, Form* src, @@ -2543,6 +3011,27 @@ LetStats insert_lets(const Function& func, }); } + // Part 10: rewrite let sequences + top_level_form->apply_form([&](Form* f) { + auto& form_elts = f->elts(); + for (size_t i = 0; i < form_elts.size(); ++i) { + if (i + 2 < form_elts.size() && dynamic_cast(form_elts[i]) && + dynamic_cast(form_elts[i + 1]) && + dynamic_cast(form_elts[i + 2])) { + auto rw = rewrite_let_sequence( + {dynamic_cast(form_elts[i]), dynamic_cast(form_elts[i + 1]), + dynamic_cast(form_elts[i + 2])}, + env, pool, let_rewrite_stats); + if (rw) { + form_elts.erase(form_elts.begin() + i + 2); + form_elts.erase(form_elts.begin() + i + 1); + form_elts.at(i) = rw; + rw->parent_form = f; + } + } + } + }); + return stats; } diff --git a/decompiler/config/jak2/all-types.gc b/decompiler/config/jak2/all-types.gc index 7b02455e6a..a8723be351 100644 --- a/decompiler/config/jak2/all-types.gc +++ b/decompiler/config/jak2/all-types.gc @@ -3913,8 +3913,8 @@ ;; the GS's UV register specifies the texel coordinate (UV) values of the vertex. (deftype gs-uv (uint64) - ((u uint16 :offset 0 :size 14) ;; Q4 fixed point - (v uint16 :offset 16 :size 14) ;; Q4 fixed point + ((u uint16 :offset 0 :size 16) ;; Q4 fixed point + (v uint16 :offset 16 :size 16) ;; Q4 fixed point ) :flag-assert #x900000008 ) @@ -3985,7 +3985,7 @@ (spsm uint8 :offset 24 :size 6) (dbp uint16 :offset 32 :size 14) (dbw uint8 :offset 48 :size 6) - (dpsm uint8 :offset 56 :size 6) + (dpsm gs-psm :offset 56 :size 6) ) :flag-assert #x900000008 ) @@ -7672,7 +7672,7 @@ (bigmap-method-19 (_type_) int 19) (bigmap-method-20 (_type_) int 20) (bigmap-method-21 (_type_ int int) int 21) - (bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int int) none 22) + (bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int gs-psm) none 22) (bigmap-method-23 (_type_) none 23) (bigmap-method-24 (_type_ dma-buffer) none 24) (bigmap-method-25 (_type_ dma-buffer) none 25) @@ -7999,8 +7999,9 @@ ;; capture ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-extern gs-set-default-store-image (function gs-store-image-packet int int int int int int int int)) +(define-extern gs-set-default-store-image (function gs-store-image-packet int int gs-psm int int int int int)) (define-extern store-image (function screen-shot-work int)) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; memory-usage-h ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -8145,12 +8146,12 @@ (color vector4w :inline :offset-assert 160) (line-color uint64 :offset-assert 176) (scan-colors vector4w 15 :inline :offset-assert 192) ;; guesss - (menu-mode basic :offset-assert 432) - (screen-copied basic :offset-assert 436) - (vu1-enable-user-menu uint64 :offset-assert 440) + (menu-mode symbol :offset-assert 432) + (screen-copied symbol :offset-assert 436) + (vu1-enable-user-menu vu1-renderer-mask :offset-assert 440) (texture-enable-user-menu uint32 :offset-assert 448) (count-down uint32 :offset-assert 452) - (horizontal-flip-flag basic :offset-assert 456) + (horizontal-flip-flag symbol :offset-assert 456) (scan-alpha float :offset-assert 460) (scanline uint32 :offset-assert 464) (progress-interp float :offset-assert 468) @@ -10956,9 +10957,8 @@ (add-colors! (_type_ vector ocean-vertex) none 17) (ocean-method-18 "Unused" (_type_ (pointer ocean-colors) (pointer ocean-colors)) none 18) ;; args are guesses (init-buffer! - "Initialize [[ocean]] DMA buffer. - @returns Pointer to the next DMA buffer" - (_type_ dma-buffer) pointer 19) + "Initialize [[ocean]] DMA buffer." + (_type_ dma-buffer) none 19) (end-buffer! (_type_ dma-buffer) none 20) (set-corners! (_type_ float float) float 21) (ocean-near-add-call (_type_ dma-buffer int) none 22) ;; start ocean-near @@ -11020,7 +11020,7 @@ (draw-ocean-texture (_type_ dma-buffer int) none 78) (ocean-method-79 (_type_ dma-buffer) none 79) (ocean-method-80 (_type_ (pointer rgba)) none 80) - (ocean-method-81 (_type_ dma-buffer) none 81) + (ocean-method-81 (_type_ dma-buffer) int 81) (draw-envmap-debug (_type_ dma-buffer) none 82) (ocean-method-83 (_type_ dma-buffer float) none 83) (ocean-method-84 (_type_ dma-buffer sky-upload-data vector4w float) none 84) @@ -24781,10 +24781,10 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-extern *blit-displays-work* blit-displays-work) -;; (define-extern blit-disp-slow function) -;; (define-extern blur-disp function) -;; (define-extern filter-disp function) -;; (define-extern hflip-disp function) +(define-extern blit-disp-slow (function dma-buffer int int int pointer)) +(define-extern blur-disp (function dma-buffer int int int symbol)) +(define-extern filter-disp (function dma-buffer vector symbol)) +(define-extern hflip-disp (function dma-buffer object)) (define-extern blit-displays (function none)) (define-extern draw-color-bars (function none)) (define-extern draw-raw-image (function bucket-id art-group int int level int none)) @@ -30547,7 +30547,7 @@ (define-extern scene-decode-continue (function basic continue-point)) (define-extern scene-lookup "TODO - basic can be a string or a scene" (function basic scene)) (define-extern *subtitle-work* subtitle-work) -(define-extern draw-subtitle-image (function subtitle-image font-context pointer)) +(define-extern draw-subtitle-image (function subtitle-image font-context none)) (define-extern process-drawable-draw-subtitles (function none :behavior process-drawable)) (define-extern scene-player-init "`object` arg can be an `(array scene)`, `pair of scene` or a `scene`" (function object symbol string none :behavior scene-player)) diff --git a/decompiler/config/jak2/ntsc_v1/type_casts.jsonc b/decompiler/config/jak2/ntsc_v1/type_casts.jsonc index ef55884b9b..6fc5cbd37f 100644 --- a/decompiler/config/jak2/ntsc_v1/type_casts.jsonc +++ b/decompiler/config/jak2/ntsc_v1/type_casts.jsonc @@ -186,26 +186,6 @@ ], "vector-segment-distance-point!": [[[21, 30], "f1", "float"]], "(method 10 profile-array)": [ - [[6, 10], "a0", "dma-packet"], - [[16, 19], "a0", "gs-gif-tag"], - [24, "a0", "(pointer gs-alpha)"], - [26, "a0", "(pointer gs-reg64)"], - [28, "a0", "(pointer gs-zbuf)"], - [30, "a0", "(pointer gs-reg64)"], - [32, "a0", "(pointer gs-test)"], - [34, "a0", "(pointer gs-reg64)"], - [35, "a0", "(pointer uint64)"], - [37, "a0", "(pointer gs-reg64)"], - [39, "a0", "(pointer gs-clamp)"], - [41, "a0", "(pointer gs-reg64)"], - [43, "a0", "(pointer gs-tex1)"], - [45, "a0", "(pointer gs-reg64)"], - [48, "a0", "(pointer gs-texa)"], - [50, "a0", "(pointer gs-reg64)"], - [52, "a0", "(pointer gs-texclut)"], - [54, "a0", "(pointer gs-reg64)"], - [56, "a0", "(pointer uint64)"], - [58, "a0", "(pointer gs-reg64)"], [[69, 73], "a0", "(pointer uint128)"], [[73, 82], "a1", "vector4w"], [[82, 89], "a1", "vector4w"], @@ -252,60 +232,6 @@ [97, "t2", "(pointer uint64)"], [[110, 117], "v1", "(pointer uint64)"] ], - "set-display-gs-state": [ - [[3, 10], "t3", "dma-packet"], - [[13, 19], "t3", "gs-gif-tag"], - [30, "t3", "(pointer gs-scissor)"], - [32, "t3", "(pointer gs-reg64)"], - [33, "t3", "(pointer gs-xy-offset)"], - [35, "t3", "(pointer gs-reg64)"], - [46, "t3", "(pointer gs-frame)"], - [48, "t3", "(pointer gs-reg64)"], - [50, "t3", "(pointer gs-test)"], - [52, "t3", "(pointer gs-reg64)"], - [54, "t3", "(pointer gs-texa)"], - [56, "t3", "(pointer gs-reg64)"], - [58, "t3", "(pointer gs-zbuf)"], - [60, "t3", "(pointer gs-reg64)"], - [61, "t3", "(pointer uint64)"], - [63, "t3", "(pointer gs-reg64)"] - ], - "set-display-gs-state-offset": [ - [[3, 10], "t5", "dma-packet"], - [[13, 19], "t5", "gs-gif-tag"], - [30, "t5", "(pointer gs-scissor)"], - [32, "t5", "(pointer gs-reg64)"], - [40, "t5", "(pointer gs-xy-offset)"], - [42, "t5", "(pointer gs-reg64)"], - [53, "t5", "(pointer gs-frame)"], - [55, "t5", "(pointer gs-reg64)"], - [57, "t5", "(pointer gs-test)"], - [59, "t5", "(pointer gs-reg64)"], - [61, "t5", "(pointer gs-texa)"], - [63, "t5", "(pointer gs-reg64)"], - [65, "t5", "(pointer gs-zbuf)"], - [67, "t5", "(pointer gs-reg64)"], - [68, "t5", "(pointer uint64)"], - [70, "t5", "(pointer gs-reg64)"] - ], - "reset-display-gs-state": [ - [[3, 8], "a2", "dma-packet"], - [[14, 17], "a2", "gs-gif-tag"], - [22, "a1", "(pointer gs-scissor)"], - [24, "a1", "(pointer gs-reg64)"], - [26, "a1", "(pointer gs-xy-offset)"], - [28, "a1", "(pointer gs-reg64)"], - [30, "a1", "(pointer gs-frame)"], - [32, "a1", "(pointer gs-reg64)"], - [34, "a1", "(pointer gs-test)"], - [36, "a1", "(pointer gs-reg64)"], - [39, "a1", "(pointer gs-texa)"], - [41, "a1", "(pointer gs-reg64)"], - [43, "a1", "(pointer gs-zbuf)"], - [45, "a1", "(pointer gs-reg64)"], - [46, "a1", "(pointer uint64)"], - [48, "a1", "(pointer gs-reg64)"] - ], "(method 3 connection-pers)": [[97, "f0", "float"]], "(method 9 connection)": [[8, "a0", "pointer"]], "(method 10 connection)": [[8, "a0", "pointer"]], @@ -347,24 +273,6 @@ [[70, 93], "a1", "adgif-shader"], [92, "a1", "adgif-shader"] ], - "upload-vram-data": [ - [[10, 17], "a0", "dma-packet"], - [[19, 26], "a0", "gs-gif-tag"], - [35, "a0", "(pointer gs-bitbltbuf)"], - [37, "a0", "(pointer gs-reg64)"], - [38, "a0", "(pointer gs-trxpos)"], - [40, "a0", "(pointer gs-reg64)"], - [46, "a0", "(pointer gs-trxreg)"], - [48, "a0", "(pointer gs-reg64)"], - [49, "a0", "(pointer gs-trxdir)"], - [51, "a0", "(pointer gs-reg64)"] - ], - "upload-vram-pages": [ - [[140, 147], "a0", "dma-packet"], - [[149, 156], "a0", "gs-gif-tag"], - [160, "a0", "(pointer int64)"], - [162, "a0", "(pointer gs-reg64)"] - ], "(method 3 generic-tie-interp-point)": [[19, "gp", "(pointer uint128)"]], "(method 19 res-lump)": [ [46, "t2", "(pointer uint64)"], @@ -613,34 +521,13 @@ [65, "a3", "int"] ], "sprite-draw": [ - [[33, 38], "a0", "dma-packet"], - [[41, 48], "a0", "gs-gif-tag"], - [52, "a0", "(pointer gs-test)"], - [54, "a0", "(pointer gs-reg64)"], - [56, "a0", "(pointer gs-clamp)"], - [58, "a0", "(pointer gs-reg64)"], [[73, 82], "a0", "dma-packet"], [[87, 92], "a0", "dma-packet"], [[111, 115], "a0", "dma-packet"], [[129, 133], "a0", "dma-packet"], [[150, 154], "a0", "dma-packet"] ], - // sprite-distort "sprite-init-distorter": [ - [[3, 7], "a1", "dma-packet"], - [[13, 16], "a1", "gs-gif-tag"], - [21, "a1", "(pointer gs-zbuf)"], - [23, "a1", "(pointer gs-reg64)"], - [25, "a1", "(pointer gs-tex0)"], - [27, "a1", "(pointer gs-reg64)"], - [29, "a1", "(pointer gs-tex1)"], - [31, "a1", "(pointer gs-reg64)"], - [32, "a1", "(pointer gs-miptbp)"], - [34, "a1", "(pointer gs-reg64)"], - [36, "a1", "(pointer gs-clamp)"], - [38, "a1", "(pointer gs-reg64)"], - [40, "a1", "(pointer gs-alpha)"], - [42, "a1", "(pointer gs-reg64)"], [50, "a3", "uint"], [[53, 58], "a1", "dma-packet"] ], @@ -1478,13 +1365,7 @@ [80, "gp", "(inline-array dma-packet)"], [[12, 18], "gp", "(pointer vif-tag)"] ], - "emerc-vu1-init-buffer": [ - [[25, 31], "a0", "dma-packet"], - [[37, 40], "a0", "gs-gif-tag"], - [44, "a0", "(pointer gs-test)"], - [46, "a0", "(pointer gs-reg64)"], - [[49, 61], "v1", "dma-packet"] - ], + "emerc-vu1-init-buffer": [[[49, 61], "v1", "dma-packet"]], "sparticle-track-root-prim": [[3, "v1", "collide-shape"]], "(method 10 sparticle-launcher)": [[[41, 75], "gp", "(array int32)"]], "birth-func-texture-group": [[[2, 10], "s5", "(array int32)"]], @@ -1708,51 +1589,10 @@ [194, "a0", "(pointer int64)"] ], "default-end-buffer": [ - [9, "v1", "dma-bucket"], - [[20, 28], "t1", "dma-packet"], - [[30, 36], "t1", "gs-gif-tag"], - [40, "t1", "(pointer gs-zbuf)"], - [42, "t1", "(pointer gs-reg64)"], - [43, "t1", "(pointer gs-test)"], - [45, "t1", "(pointer gs-reg64)"], - [47, "t1", "(pointer gs-alpha)"], - [49, "t1", "(pointer gs-reg64)"], - [50, "t1", "(pointer uint64)"], - [52, "t1", "(pointer gs-reg64)"], - [54, "t1", "(pointer gs-clamp)"], - [56, "t1", "(pointer gs-reg64)"], - [58, "t1", "(pointer gs-tex0)"], - [60, "t1", "(pointer gs-reg64)"], - [63, "t1", "(pointer gs-texa)"], - [65, "t1", "(pointer gs-reg64)"], - [67, "t1", "(pointer gs-texclut)"], - [69, "t1", "(pointer gs-reg64)"], - [71, "t1", "(pointer uint64)"], - [73, "t1", "(pointer gs-reg64)"], [[79, 82], "a1", "dma-packet"], [85, "a1", "dma-bucket"] ], "default-init-buffer": [ - [[20, 28], "t1", "dma-packet"], - [[30, 36], "t1", "gs-gif-tag"], - [40, "t1", "(pointer gs-zbuf)"], - [42, "t1", "(pointer gs-reg64)"], - [43, "t1", "(pointer gs-test)"], - [45, "t1", "(pointer gs-reg64)"], - [47, "t1", "(pointer gs-alpha)"], - [49, "t1", "(pointer gs-reg64)"], - [50, "t1", "(pointer uint64)"], - [52, "t1", "(pointer gs-reg64)"], - [54, "t1", "(pointer gs-clamp)"], - [56, "t1", "(pointer gs-reg64)"], - [58, "t1", "(pointer gs-tex0)"], - [60, "t1", "(pointer gs-reg64)"], - [63, "t1", "(pointer gs-texa)"], - [65, "t1", "(pointer gs-reg64)"], - [67, "t1", "(pointer gs-texclut)"], - [69, "t1", "(pointer gs-reg64)"], - [71, "t1", "(pointer uint64)"], - [73, "t1", "(pointer gs-reg64)"], [[82, 85], "a1", "dma-packet"] //[85, "a1", "dma-bucket"] ], @@ -2132,74 +1972,19 @@ [[0, 46], "s4", "merc-fragment"], [[0, 47], "s5", "merc-fragment-control"] ], - "merc-vu1-init-buffer": [ - [[21, 37], "a0", "dma-packet"], - [[37, 40], "a0", "gs-gif-tag"], - [45, "a0", "(pointer gs-test)"], - [47, "a0", "(pointer gs-reg64)"], - [49, "a1", "(pointer gs-reg64)"], - [52, "a0", "(pointer gs-zbuf)"], - [54, "a0", "(pointer gs-reg64)"], - [[63, 68], "v1", "dma-packet"] - ], + "merc-vu1-init-buffer": [[[63, 68], "v1", "dma-packet"]], "texture-usage-init": [ [23, "a1", "texture-masks"], [24, "a1", "texture-mask"] ], - "upload-vram-pages-pris": [ - [[134, 141], "a0", "dma-packet"], - [[143, 150], "a0", "gs-gif-tag"], - [154, "a0", "(pointer int64)"], - [156, "a0", "(pointer gs-reg64)"] - ], "(method 14 texture-pool)": [[22, "a3", "(pointer int32)"]], "(method 13 texture-page)": [ - [[16, 23], "a0", "dma-packet"], - [[25, 32], "a0", "gs-gif-tag"], - [36, "a0", "(pointer int64)"], - [38, "a0", "(pointer gs-reg64)"], [[42, 45], "a0", "dma-packet"], [45, "a0", "(pointer int64)"] ], - "texture-relocate": [ - [[17, 21], "t4", "dma-packet"], - [[27, 30], "t4", "gs-gif-tag"], - [60, "t4", "(pointer gs-bitbltbuf)"], - [62, "t4", "(pointer gs-reg64)"], - [63, "t4", "(pointer gs-trxpos)"], - [65, "t4", "(pointer gs-reg64)"], - [71, "t4", "(pointer gs-trxreg)"], - [73, "t4", "(pointer gs-reg64)"], - [75, "t4", "(pointer gs-trxdir)"], - [77, "t4", "(pointer gs-reg64)"], - [[98, 102], "a2", "dma-packet"], - [[108, 111], "a2", "gs-gif-tag"], - [132, "a2", "(pointer gs-bitbltbuf)"], - [134, "a2", "(pointer gs-reg64)"], - [135, "a2", "(pointer gs-trxpos)"], - [137, "a2", "(pointer gs-reg64)"], - [139, "a2", "(pointer gs-trxreg)"], - [141, "a2", "(pointer gs-reg64)"], - [143, "a2", "(pointer gs-trxdir)"], - [145, "a2", "(pointer gs-reg64)"], - [[157, 161], "a2", "dma-packet"], - [[167, 170], "a2", "gs-gif-tag"], - [191, "a2", "(pointer gs-bitbltbuf)"], - [193, "a2", "(pointer gs-reg64)"], - [194, "a2", "(pointer gs-trxpos)"], - [196, "a2", "(pointer gs-reg64)"], - [198, "a2", "(pointer gs-trxreg)"], - [200, "a2", "(pointer gs-reg64)"], - [202, "a2", "(pointer gs-trxdir)"], - [204, "a2", "(pointer gs-reg64)"] - ], "(method 11 texture-pool)": [ - [[189, 196], "a0", "dma-packet"], [217, "a0", "dma-packet"], - [218, "a0", "(pointer int64)"], - [211, "a0", "(pointer gs-reg64)"], - [209, "a0", "(pointer int64)"], - [[198, 205], "a0", "gs-gif-tag"] + [218, "a0", "(pointer int64)"] ], "texture-page-login": [[[34, 45], "s2", "texture-page"]], "(method 9 texture-page-dir)": [ @@ -2584,12 +2369,7 @@ [[3, 17], "a0", "dma-packet"], [[24, 31], "v1", "dma-packet"] ], - "tfrag-init-buffer": [ - [[10, 17], "a0", "dma-packet"], - [[19, 26], "a0", "gs-gif-tag"], - [31, "a0", "(pointer gs-reg64)"], - [[47, 55], "v1", "dma-packet"] - ], + "tfrag-init-buffer": [[[47, 55], "v1", "dma-packet"]], "tfrag-end-buffer": [ [[1, 8], "a2", "dma-packet"], [[11, 18], "a0", "(pointer vif-tag)"], @@ -2663,16 +2443,8 @@ [[65, 72], "v1", "(pointer vif-tag)"] ], "tie-end-buffer": [ - [[1, 8], "a1", "dma-packet"], - [[10, 17], "a1", "gs-gif-tag"], - [21, "a1", "(pointer gs-test)"], - [23, "a1", "(pointer gs-reg64)"], [[27, 34], "a1", "dma-packet"], - [38, "a0", "(pointer vif-tag)"], - [40, "a0", "(pointer vif-tag)"], - [42, "a0", "(pointer vif-tag)"], - [44, "a0", "(pointer vif-tag)"], - [[45, 49], "a0", "(pointer int32)"] + [[38, 49], "a0", "(pointer vif-tag)"] ], "tie-ints": [ [17, "v1", "(pointer uint32)"], @@ -2720,10 +2492,6 @@ ], "tie-floats": [[[3, 73], "gp", "(pointer uint32)"]], "tie-init-buf": [ - [[24, 31], "a0", "dma-packet"], - [[33, 40], "a0", "gs-gif-tag"], - [44, "a0", "(pointer gs-zbuf)"], - [46, "a0", "(pointer gs-reg64)"], [[49, 59], "v1", "dma-packet"], [[84, 90], "v1", "dma-packet"], [92, "v1", "(pointer int32)"] @@ -3083,14 +2851,6 @@ [[19, 29], "v1", "region-prim-area"] ], "add-debug-bound": [ - [[33, 41], "a0", "dma-packet"], - [[42, 50], "a0", "gs-gif-tag"], - [53, "a0", "(pointer gs-zbuf)"], - [55, "a0", "(pointer gs-reg64)"], - [57, "a0", "(pointer gs-test)"], - [59, "a0", "(pointer gs-reg64)"], - [61, "a0", "(pointer gs-alpha)"], - [63, "a0", "(pointer gs-reg64)"], [105, "v1", "dma-packet"], [99, "a0", "dma-packet"], [97, "a1", "dma-packet"] @@ -3571,59 +3331,13 @@ ], "(method 13 sky-work)": [ [[78, 170], "s4", "sky-work"], - [[162, 168], "v1", "dma-packet"], - [[221, 228], "a1", "dma-packet"], - [[230, 239], "a1", "gs-gif-tag"], - [243, "a1", "(pointer gs-zbuf)"], - [245, "a1", "(pointer gs-reg64)"], - [247, "a1", "(pointer gs-test)"], - [249, "a1", "(pointer gs-reg64)"], - [250, "a1", "(pointer gs-alpha)"], - [252, "a1", "(pointer gs-reg64)"], - [255, "a1", "(pointer gs-tex0)"], - [257, "a1", "(pointer gs-reg64)"], - [259, "a1", "(pointer gs-tex1)"], - [261, "a1", "(pointer gs-reg64)"], - [263, "a1", "(pointer gs-clamp)"], - [265, "a1", "(pointer gs-reg64)"], - [266, "a1", "(pointer uint64)"], - [268, "a1", "(pointer gs-reg64)"], [[271, 309], "a2", "(inline-array qword)"], [[316, 354], "t0", "(inline-array qword)"], - [[362, 369], "t1", "dma-packet"], - [[371, 380], "t1", "gs-gif-tag"], - [384, "t1", "(pointer gs-alpha)"], - [386, "t1", "(pointer gs-reg64)"], - [389, "t1", "(pointer gs-tex0)"], - [391, "t1", "(pointer gs-reg64)"], - [392, "t1", "(pointer uint64)"], - [394, "t1", "(pointer gs-reg64)"], [[397, 429], "t0", "(inline-array qword)"], - [[437, 444], "a1", "dma-packet"], - [[446, 455], "a1", "gs-gif-tag"], - [458, "a1", "(pointer gs-alpha)"], - [460, "a1", "(pointer gs-reg64)"], [[515, 561], "t1", "(inline-array qword)"], - [[574, 581], "a3", "dma-packet"], - [[583, 592], "a3", "gs-gif-tag"], - [596, "a3", "(pointer gs-alpha)"], - [598, "a3", "(pointer gs-reg64)"], - [601, "a3", "(pointer gs-tex0)"], - [603, "a3", "(pointer gs-reg64)"], - [604, "a3", "(pointer uint64)"], - [606, "a3", "(pointer gs-reg64)"], [[609, 647], "v1", "(inline-array qword)"], - [[673, 680], "a1", "dma-packet"], - [[682, 691], "a1", "gs-gif-tag"], - [695, "a1", "(pointer gs-zbuf)"], - [697, "a1", "(pointer gs-reg64)"], - [699, "a1", "(pointer gs-test)"], - [701, "a1", "(pointer gs-reg64)"], - [728, "a1", "(pointer gs-rgbaq)"], - [730, "a1", "(pointer gs-reg64)"], [[733, 738], "v1", "(inline-array qword)"], - [[741, 750], "v1", "(inline-array qword)"], - [[760, 766], "v1", "dma-packet"] + [[741, 750], "v1", "(inline-array qword)"] ], "(method 33 sky-work)": [ [42, "s5", "int"], @@ -3631,99 +3345,22 @@ [59, "a2", "sky-work"], [36, "v1", "sky-work"] ], - "(method 23 sky-work)": [ - [[3, 10], "a0", "dma-packet"], - [[12, 21], "a0", "gs-gif-tag"], - [25, "s3", "(pointer gs-test)"], - [27, "s3", "(pointer gs-reg64)"], - [42, "s3", "(pointer gs-tex0)"], - [44, "s3", "(pointer gs-reg64)"], - [46, "s3", "(pointer gs-tex1)"], - [48, "s3", "(pointer gs-reg64)"], - [49, "s3", "(pointer gs-clamp)"], - [51, "s3", "(pointer gs-reg64)"], - [53, "s3", "(pointer gs-alpha)"], - [55, "s3", "(pointer gs-reg64)"], - [56, "s3", "(pointer uint64)"], - [58, "s3", "(pointer gs-reg64)"], - [[255, 263], "s4", "dma-packet"] - ], - "(method 27 sky-work)": [ - [[5, 10], "a0", "dma-packet"], - [[12, 20], "a0", "gs-gif-tag"], - [25, "a0", "(pointer gs-alpha)"], - [27, "a0", "(pointer gs-reg64)"], - [[142, 149], "s4", "dma-packet"] - ], - "(method 34 sky-work)": [ - [[5, 10], "a0", "dma-packet"], - [[12, 20], "a0", "gs-gif-tag"], - [25, "a0", "(pointer gs-zbuf)"], - [27, "a0", "(pointer gs-reg64)"], - [29, "a0", "(pointer gs-test)"], - [31, "a0", "(pointer gs-reg64)"], - [33, "a0", "(pointer gs-alpha)"], - [35, "a0", "(pointer gs-reg64)"], - [[80, 88], "s5", "dma-packet"] - ], - "(method 35 sky-work)": [ - [[2, 9], "a1", "dma-packet"], - [[11, 20], "a1", "gs-gif-tag"], - [24, "a1", "(pointer gs-test)"], - [26, "a1", "(pointer gs-reg64)"], - [[66, 74], "s5", "dma-packet"] - ], - "(method 36 sky-work)": [ - [[7, 14], "a0", "dma-packet"], - [[16, 26], "a0", "gs-gif-tag"], - [62, "s2", "(pointer gs-tex0)"], - [64, "s2", "(pointer gs-reg64)"], - [66, "s2", "(pointer gs-tex1)"], - [68, "s2", "(pointer gs-reg64)"], - [70, "s2", "(pointer gs-test)"], - [72, "s2", "(pointer gs-reg64)"], - [74, "s2", "(pointer gs-clamp)"], - [76, "s2", "(pointer gs-reg64)"], - [78, "s2", "(pointer gs-alpha)"], - [80, "s2", "(pointer gs-reg64)"], - [[83, 177], "v1", "(inline-array qword)"] - ], + "(method 23 sky-work)": [[[255, 263], "s4", "dma-packet"]], + "(method 27 sky-work)": [[[142, 149], "s4", "dma-packet"]], + "(method 34 sky-work)": [[[80, 88], "s5", "dma-packet"]], + "(method 35 sky-work)": [[[66, 74], "s5", "dma-packet"]], + "(method 36 sky-work)": [[[83, 177], "v1", "(inline-array qword)"]], "draw-subtitle-image": [ - [[44, 48], "a0", "dma-packet"], - [[49, 58], "a0", "gs-gif-tag"], - [70, "a0", "(pointer gs-bitbltbuf)"], - [72, "a0", "(pointer gs-reg64)"], - [73, "a0", "(pointer gs-trxpos)"], - [75, "a0", "(pointer gs-reg64)"], - [81, "a0", "(pointer gs-trxreg)"], - [83, "a0", "(pointer gs-reg64)"], - [84, "a0", "(pointer gs-trxdir)"], - [86, "a0", "(pointer gs-reg64)"], - [[106, 112], "a1", "dma-packet"], - [[113, 121], "a1", "gs-gif-tag"], - [128, "a1", "(pointer gs-reg64)"], - [130, "a1", "(pointer gs-alpha)"], - [126, "a1", "(pointer gs-test)"], - [132, "a1", "(pointer gs-reg64)"], - [148, "a1", "(pointer gs-tex0)"], - [150, "a1", "(pointer gs-reg64)"], - [153, "a1", "(pointer gs-reg64)"], - [157, "a1", "(pointer gs-reg64)"], - [160, "a1", "(pointer gs-reg64)"], - [151, "a1", "(pointer gs-tex1)"], - [155, "a1", "(pointer gs-clamp)"], - [158, "a1", "(pointer uint64)"], [[163, 194], "v1", "(pointer uint128)"], - [[195, 199], "t0", "gs-gif-tag"], - [[201, 206], "t0", "gs-gif-tag"], - [[208, 213], "a2", "gs-gif-tag"], - [[215, 220], "v1", "gs-gif-tag"], + [[195, 199], "t0", "vector4w"], + [[199, 206], "t0", "vector4w"], + [[206, 213], "a2", "vector4w"], + [[215, 220], "v1", "vector4w"], [[223, 254], "v1", "(pointer uint128)"], - [[255, 259], "t0", "gs-gif-tag"], - [[261, 266], "t0", "gs-gif-tag"], - [[268, 273], "a1", "gs-gif-tag"], - [[275, 280], "v1", "gs-gif-tag"], - [[291, 296], "v1", "dma-packet"] + [[255, 259], "t0", "vector4w"], + [[259, 266], "t0", "vector4w"], + [[266, 273], "a1", "vector4w"], + [[275, 280], "v1", "vector4w"] ], "scene-player-init": [ [[37, 44], "s5", "(array scene)"], @@ -4116,34 +3753,6 @@ [319, "v1", "dma-packet"], [320, "v1", "dma-packet"] ], - "(method 19 ocean)": [ - [[2, 8], "a0", "dma-packet"], - [[11, 17], "a0", "gs-gif-tag"], - [22, "s4", "(pointer gs-test)"], - [24, "s4", "(pointer gs-reg64)"], - [26, "s4", "(pointer gs-alpha)"], - [28, "s4", "(pointer gs-reg64)"], - [41, "s4", "(pointer gs-tex0)"], - [43, "s4", "(pointer gs-reg64)"], - [45, "s4", "(pointer gs-tex1)"], - [47, "s4", "(pointer gs-reg64)"], - [49, "s4", "(pointer gs-texa)"], - [51, "s4", "(pointer gs-reg64)"], - [53, "s4", "(pointer gs-miptbp)"], - [55, "s4", "(pointer gs-reg64)"], - [57, "s4", "(pointer gs-miptbp)"], - [59, "s4", "(pointer gs-reg64)"], - [60, "s4", "(pointer gs-clamp)"], - [62, "s4", "(pointer gs-reg64)"], - [64, "s4", "(pointer gs-fogcol)"], - [66, "s4", "(pointer gs-reg64)"] - ], - "(method 20 ocean)": [ - [[3, 7], "a0", "dma-packet"], - [[13, 16], "a0", "gs-gif-tag"], - [22, "a0", "(pointer gs-texa)"], - [24, "a0", "(pointer gs-reg64)"] - ], "(method 22 ocean)": [[[3, 11], "a0", "dma-packet"]], "(method 23 ocean)": [[[3, 11], "a0", "dma-packet"]], "(method 25 ocean)": [[[8, 16], "a1", "dma-packet"]], @@ -4165,10 +3774,6 @@ [[130, 268], "a1", "(inline-array vector4w)"] ], "(method 29 ocean)": [ - [[5, 9], "a0", "dma-packet"], - [[15, 18], "a0", "gs-gif-tag"], - [23, "a0", "(pointer gs-test)"], - [25, "a0", "(pointer gs-reg64)"], [[36, 41], "a0", "dma-packet"], [91, "a1", "(pointer int16)"] ], @@ -4257,295 +3862,49 @@ "(method 75 ocean)": [[[3, 8], "a0", "dma-packet"]], "(method 76 ocean)": [[[3, 8], "a0", "dma-packet"]], "(method 77 ocean)": [[[3, 8], "a0", "dma-packet"]], - "(method 78 ocean)": [ - [[20, 24], "a0", "dma-packet"], - [[27, 33], "a0", "gs-gif-tag"], - [38, "a0", "(pointer gs-test)"], - [40, "a0", "(pointer gs-reg64)"], - [42, "a0", "(pointer gs-alpha)"], - [44, "a0", "(pointer gs-reg64)"], - [45, "a0", "(pointer gs-tex1)"], - [47, "a0", "(pointer gs-reg64)"], - [[58, 63], "a0", "dma-packet"] - ], + "(method 78 ocean)": [[[58, 63], "a0", "dma-packet"]], "(method 79 ocean)": [ - [[13, 17], "a0", "dma-packet"], - [[23, 26], "a0", "gs-gif-tag"], - [31, "s3", "(pointer gs-test)"], - [33, "s3", "(pointer gs-reg64)"], - [35, "s3", "(pointer gs-alpha)"], - [37, "s3", "(pointer gs-reg64)"], - [51, "s3", "(pointer gs-tex0)"], - [53, "s3", "(pointer gs-reg64)"], - [55, "s3", "(pointer gs-tex1)"], - [57, "s3", "(pointer gs-reg64)"], - [58, "s3", "(pointer gs-clamp)"], - [60, "s3", "(pointer gs-reg64)"], - [61, "s3", "(pointer uint64)"], - [63, "s3", "(pointer gs-reg64)"], [[66, 81], "v1", "(inline-array vector4w)"], - [[95, 99], "a0", "dma-packet"], - [[105, 108], "a0", "gs-gif-tag"], - [125, "s3", "(pointer gs-tex0)"], - [127, "s3", "(pointer gs-reg64)"], - [128, "s3", "(pointer uint64)"], - [130, "s3", "(pointer gs-reg64)"], [[133, 148], "v1", "(inline-array vector4w)"], - [[162, 166], "a0", "dma-packet"], - [[172, 175], "a0", "gs-gif-tag"], - [192, "s3", "(pointer gs-tex0)"], - [194, "s3", "(pointer gs-reg64)"], - [195, "s3", "(pointer uint64)"], - [197, "s3", "(pointer gs-reg64)"], [[200, 215], "v1", "(inline-array vector4w)"], - [[229, 233], "a0", "dma-packet"], - [[239, 242], "a0", "gs-gif-tag"], - [259, "s3", "(pointer gs-tex0)"], - [261, "s3", "(pointer gs-reg64)"], - [262, "s3", "(pointer uint64)"], - [264, "s3", "(pointer gs-reg64)"], [[267, 282], "v1", "(inline-array vector4w)"], - [[296, 300], "a0", "dma-packet"], - [[306, 309], "a0", "gs-gif-tag"], - [326, "s3", "(pointer gs-tex0)"], - [328, "s3", "(pointer gs-reg64)"], - [329, "s3", "(pointer uint64)"], - [331, "s3", "(pointer gs-reg64)"], - [[333, 349], "v1", "(inline-array vector4w)"], + [[334, 349], "v1", "(inline-array vector4w)"], [[360, 373], "v1", "(inline-array vector4w)"] ], "(method 81 ocean)": [ - [[13, 17], "a0", "dma-packet"], - [[23, 26], "a0", "gs-gif-tag"], - [31, "s3", "(pointer gs-test)"], - [33, "s3", "(pointer gs-reg64)"], - [35, "s3", "(pointer gs-alpha)"], - [37, "s3", "(pointer gs-reg64)"], - [51, "s3", "(pointer gs-tex0)"], - [53, "s3", "(pointer gs-reg64)"], - [55, "s3", "(pointer gs-tex1)"], - [57, "s3", "(pointer gs-reg64)"], - [58, "s3", "(pointer gs-clamp)"], - [60, "s3", "(pointer gs-reg64)"], - [61, "s3", "(pointer uint64)"], - [63, "s3", "(pointer gs-reg64)"], [[66, 81], "v1", "(inline-array vector4w)"], - [[87, 91], "a0", "dma-packet"], - [[97, 100], "a0", "gs-gif-tag"], - [106, "a0", "(pointer gs-bitbltbuf)"], - [108, "a0", "(pointer gs-reg64)"], - [109, "a0", "(pointer gs-trxpos)"], - [111, "a0", "(pointer gs-reg64)"], - [113, "a0", "(pointer gs-trxreg)"], - [115, "a0", "(pointer gs-reg64)"], - [116, "a0", "(pointer gs-trxdir)"], - [118, "a0", "(pointer gs-reg64)"], [[121, 126], "v1", "(inline-array vector4w)"], - [[146, 150], "a0", "dma-packet"], - [[156, 159], "a0", "gs-gif-tag"], - [163, "s3", "(pointer gs-alpha)"], - [165, "s3", "(pointer gs-reg64)"], - [179, "s3", "(pointer gs-tex0)"], - [181, "s3", "(pointer gs-reg64)"], - [182, "s3", "(pointer gs-tex1)"], - [184, "s3", "(pointer gs-reg64)"], - [185, "s3", "(pointer gs-clamp)"], - [187, "s3", "(pointer gs-reg64)"], - [188, "s3", "(pointer uint64)"], - [190, "s3", "(pointer gs-reg64)"], [[193, 215], "v1", "(inline-array vector4w)"], - [[221, 225], "a0", "dma-packet"], - [[231, 234], "a0", "gs-gif-tag"], - [239, "a0", "(pointer gs-alpha)"], - [241, "a0", "(pointer gs-reg64)"], - [243, "a0", "(pointer gs-tex1)"], - [245, "a0", "(pointer gs-reg64)"], - [246, "a0", "(pointer uint64)"], - [248, "a0", "(pointer gs-reg64)"], [[251, 273], "v1", "(inline-array vector4w)"], - [[287, 291], "a0", "dma-packet"], - [[297, 300], "a0", "gs-gif-tag"], - [305, "s3", "(pointer gs-alpha)"], - [307, "s3", "(pointer gs-reg64)"], - [320, "s3", "(pointer gs-tex0)"], - [322, "s3", "(pointer gs-reg64)"], - [324, "s3", "(pointer gs-tex1)"], - [326, "s3", "(pointer gs-reg64)"], - [327, "s3", "(pointer uint64)"], - [329, "s3", "(pointer gs-reg64)"], - [[332, 354], "v1", "(inline-array vector4w)"], - [[376, 381], "a3", "dma-packet"], - [[387, 390], "a3", "gs-gif-tag"], - [394, "a3", "(pointer gs-xy-offset)"], - [396, "a3", "(pointer gs-reg64)"], - [406, "a3", "(pointer gs-frame)"], - [408, "a3", "(pointer gs-reg64)"], - [416, "a3", "(pointer gs-scissor)"], - [418, "a3", "(pointer gs-reg64)"], - [420, "a3", "(pointer gs-test)"], - [422, "a3", "(pointer gs-reg64)"], - [424, "a3", "(pointer gs-alpha)"], - [426, "a3", "(pointer gs-reg64)"], - [440, "a3", "(pointer gs-tex0)"], - [442, "a3", "(pointer gs-reg64)"], - [443, "a3", "(pointer uint64)"], - [445, "a3", "(pointer gs-reg64)"], - [448, "a3", "(pointer gs-texa)"], - [450, "a3", "(pointer gs-reg64)"], - [452, "a3", "(pointer gs-tex1)"], - [454, "a3", "(pointer gs-reg64)"], - [455, "a3", "(pointer uint64)"], - [457, "a3", "(pointer gs-reg64)"], - [459, "a3", "(pointer gs-prim)"], - [460, "a3", "(pointer gs-reg64)"], - [[469, 473], "t1", "dma-packet"], - [[479, 482], "t1", "gs-gif-tag"], - [492, "t1", "(pointer gs-xyz)"], - [494, "t1", "(pointer gs-reg64)"], - [499, "t1", "(pointer gs-xyz)"], - [501, "t1", "(pointer gs-reg64)"], - [511, "t1", "(pointer gs-xyz)"], - [513, "t1", "(pointer gs-reg64)"], - [522, "t1", "(pointer gs-xyz)"], - [524, "t1", "(pointer gs-reg64)"], - [[536, 540], "a3", "dma-packet"], - [[546, 549], "a3", "gs-gif-tag"], - [563, "a3", "(pointer gs-frame)"], - [565, "a3", "(pointer gs-reg64)"], - [581, "a3", "(pointer gs-tex0)"], - [583, "a3", "(pointer gs-reg64)"], - [585, "a3", "(pointer gs-prim)"], - [586, "a3", "(pointer gs-reg64)"], - [[594, 598], "a1", "dma-packet"], - [[604, 607], "a1", "gs-gif-tag"], - [617, "a1", "(pointer gs-xyz)"], - [619, "a1", "(pointer gs-reg64)"], - [624, "a1", "(pointer gs-xyz)"], - [626, "a1", "(pointer gs-reg64)"], - [636, "a1", "(pointer gs-xyz)"], - [638, "a1", "(pointer gs-reg64)"], - [647, "a1", "(pointer gs-xyz)"], - [649, "a1", "(pointer gs-reg64)"] + [[332, 354], "v1", "(inline-array vector4w)"] ], "(method 82 ocean)": [ - [[10, 14], "a0", "dma-packet"], - [[20, 23], "a0", "gs-gif-tag"], - [28, "s3", "(pointer gs-test)"], - [30, "s3", "(pointer gs-reg64)"], - [32, "s3", "(pointer gs-alpha)"], - [34, "s3", "(pointer gs-reg64)"], - [54, "s3", "(pointer gs-tex0)"], - [56, "s3", "(pointer gs-reg64)"], - [58, "s3", "(pointer gs-tex1)"], - [60, "s3", "(pointer gs-reg64)"], - [62, "s3", "(pointer gs-clamp)"], - [64, "s3", "(pointer gs-reg64)"], - [65, "s3", "(pointer uint64)"], - [67, "s3", "(pointer gs-reg64)"], [[70, 90], "v1", "(inline-array vector4w)"], - [[103, 107], "a0", "dma-packet"], - [[113, 116], "a0", "gs-gif-tag"], - [121, "s3", "(pointer gs-test)"], - [123, "s3", "(pointer gs-reg64)"], - [124, "s3", "(pointer gs-alpha)"], - [126, "s3", "(pointer gs-reg64)"], - [144, "s3", "(pointer gs-tex0)"], - [146, "s3", "(pointer gs-reg64)"], - [147, "s3", "(pointer gs-tex1)"], - [149, "s3", "(pointer gs-reg64)"], - [151, "s3", "(pointer gs-clamp)"], - [153, "s3", "(pointer gs-reg64)"], - [154, "s3", "(pointer uint64)"], - [156, "s3", "(pointer gs-reg64)"], [[159, 179], "v1", "(inline-array vector4w)"] ], "(method 83 ocean)": [ - [[13, 17], "a0", "dma-packet"], - [[23, 26], "a0", "gs-gif-tag"], - [31, "s1", "(pointer gs-alpha)"], - [33, "s1", "(pointer gs-reg64)"], - [53, "s1", "(pointer gs-tex0)"], - [55, "s1", "(pointer gs-reg64)"], - [57, "s1", "(pointer gs-clamp)"], - [59, "s1", "(pointer gs-reg64)"], - [60, "s1", "(pointer uint64)"], - [62, "s1", "(pointer gs-reg64)"], [69, "v1", "(pointer uint128)"], [[97, 115], "s1", "(inline-array vector4w)"] ], "(method 84 ocean)": [[[66, 92], "t1", "(inline-array vector4w)"]], "(method 85 ocean)": [ - [[5, 9], "a0", "dma-packet"], - [[15, 18], "a0", "gs-gif-tag"], - [23, "a0", "(pointer gs-alpha)"], - [25, "a0", "(pointer gs-reg64)"], [32, "v1", "(pointer uint128)"], [[89, 118], "s0", "(inline-array vector4w)"], [[128, 137], "s4", "(pointer uint128)"], [[128, 137], "v1", "(pointer uint128)"] ], "(method 88 ocean)": [ - [[5, 9], "a0", "dma-packet"], - [[15, 18], "a0", "gs-gif-tag"], - [23, "s3", "(pointer gs-test)"], - [25, "s3", "(pointer gs-reg64)"], - [39, "s3", "(pointer gs-tex0)"], - [41, "s3", "(pointer gs-reg64)"], - [43, "s3", "(pointer gs-tex1)"], - [45, "s3", "(pointer gs-reg64)"], - [46, "s3", "(pointer gs-clamp)"], - [48, "s3", "(pointer gs-reg64)"], - [50, "s3", "(pointer gs-alpha)"], - [52, "s3", "(pointer gs-reg64)"], - [53, "s3", "(pointer uint64)"], - [55, "s3", "(pointer gs-reg64)"], [[227, 232], "a0", "(inline-array vector4w)"], [[244, 270], "a1", "(inline-array vector4w)"], [[282, 288], "a0", "(inline-array vector4w)"], [[299, 324], "a1", "(inline-array vector4w)"] ], "(method 89 ocean)": [ - [[39, 43], "a0", "dma-packet"], - [[49, 52], "a0", "gs-gif-tag"], - [57, "a0", "(pointer gs-test)"], - [59, "a0", "(pointer gs-reg64)"], - [61, "a0", "(pointer gs-alpha)"], - [63, "a0", "(pointer gs-reg64)"], - [64, "a0", "(pointer uint64)"], - [66, "a0", "(pointer gs-reg64)"], [[69, 87], "v1", "(inline-array vector4w)"], [[88, 93], "a0", "(inline-array vector4w)"], [[93, 101], "v1", "(inline-array vector4w)"], - [[107, 111], "a0", "dma-packet"], - [[117, 120], "a0", "gs-gif-tag"], - [125, "a0", "(pointer gs-xy-offset)"], - [127, "a0", "(pointer gs-reg64)"], - [130, "a0", "(pointer gs-texa)"], - [132, "a0", "(pointer gs-reg64)"], - [133, "a0", "(pointer uint64)"], - [135, "a0", "(pointer gs-reg64)"], [[138, 144], "v1", "adgif-shader"], [[234, 240], "v1", "adgif-shader"], - [[295, 299], "a0", "dma-packet"], - [[305, 308], "a0", "gs-gif-tag"], - [313, "s3", "(pointer gs-alpha)"], - [315, "s3", "(pointer gs-reg64)"], - [334, "s3", "(pointer gs-tex0)"], - [336, "s3", "(pointer gs-reg64)"], - [338, "s3", "(pointer gs-tex1)"], - [340, "s3", "(pointer gs-reg64)"], - [342, "s3", "(pointer gs-clamp)"], - [344, "s3", "(pointer gs-reg64)"], - [346, "s3", "(pointer gs-rgbaq)"], - [348, "s3", "(pointer gs-reg64)"], - [349, "s3", "(pointer uint64)"], - [351, "s3", "(pointer gs-reg64)"], - [[357, 361], "a0", "dma-packet"], - [[367, 370], "a0", "gs-gif-tag"], - [374, "a0", "(pointer gs-tex1)"], - [376, "a0", "(pointer gs-reg64)"], - [377, "a0", "(pointer uint64)"], - [379, "a0", "(pointer gs-reg64)"], [[382, 421], "v1", "(inline-array vector4w)"] ], "(method 90 ocean)": [[0, "a2", "(pointer int32)"]], @@ -5434,13 +4793,7 @@ "set-shadow-by-name": [[7, "v1", "process-drawable"]], "get-shadow-by-name": [[7, "v1", "process-drawable"]], "(anon-function 2 memory-usage)": [[211, "v1", "collide-shape-moving"]], - "(method 9 screen-filter)": [ - [[25, 31], "a0", "dma-packet"], - [[34, 40], "a0", "gs-gif-tag"], - [45, "a0", "(pointer gs-test)"], - [47, "a0", "(pointer gs-reg64)"], - [[72, 102], "t1", "rgba"] - ], + "(method 9 screen-filter)": [[[72, 102], "t1", "rgba"]], "(method 16 nav-engine)": [[92, "gp", "nav-engine-spr-buffer"]], "(method 12 nav-engine)": [ [[22, 28], "v1", "connection"], @@ -5573,20 +4926,8 @@ "(method 180 fodder)": [[24, "s1", "fodder"]], "(method 55 fodder)": [[29, "s5", "process-drawable"]], "(method 13 hud-box)": [ - [[63, 70], "t4", "dma-packet"], - [[72, 79], "t4", "gs-gif-tag"], - [83, "t4", "(pointer gs-test)"], - [85, "t4", "(pointer gs-reg64)"], - [87, "t4", "(pointer gs-alpha)"], - [89, "t4", "(pointer gs-reg64)"], [[96, 101], "t3", "(pointer uint128)"], [[110, 144], "t4", "(inline-array vector4w)"], - [[156, 163], "t2", "dma-packet"], - [[165, 172], "t2", "gs-gif-tag"], - [176, "t2", "(pointer gs-alpha)"], - [178, "t2", "(pointer gs-reg64)"], - [180, "t2", "(pointer gs-rgbaq)"], - [182, "t2", "(pointer gs-reg64)"], [[187, 212], "t2", "(inline-array vector4w)"] ], "(method 9 hud-sprite)": [ @@ -5595,45 +4936,9 @@ [[280, 316], "v1", "(inline-array vector4w)"] ], "(method 9 hud-box)": [[[1, 53], "v1", "(inline-array vector4w)"]], - "(method 10 hud-box)": [ - [[1, 8], "a2", "dma-packet"], - [[10, 17], "a2", "gs-gif-tag"], - [21, "a2", "(pointer gs-test)"], - [23, "a2", "(pointer gs-reg64)"], - [25, "a2", "(pointer gs-alpha)"], - [27, "a2", "(pointer gs-reg64)"], - [[31, 77], "v1", "(inline-array vector4w)"] - ], - "(method 11 hud-box)": [ - [[1, 8], "a2", "dma-packet"], - [[10, 17], "a2", "gs-gif-tag"], - [21, "a2", "(pointer gs-test)"], - [23, "a2", "(pointer gs-reg64)"], - [25, "a2", "(pointer gs-alpha)"], - [27, "a2", "(pointer gs-reg64)"], - [[31, 77], "v1", "(inline-array vector4w)"] - ], - "(method 12 hud-box)": [ - [[1, 8], "a2", "dma-packet"], - [[10, 17], "a2", "gs-gif-tag"], - [21, "a2", "(pointer gs-test)"], - [23, "a2", "(pointer gs-reg64)"], - [25, "a2", "(pointer gs-alpha)"], - [27, "a2", "(pointer gs-reg64)"], - [[31, 77], "v1", "(inline-array vector4w)"] - ], - "(method 14 hud-box)": [ - [[1, 8], "a2", "dma-packet"], - [[10, 17], "a2", "gs-gif-tag"], - [43, "a1", "(pointer gs-scissor)"], - [45, "a1", "(pointer gs-reg64)"] - ], - "(method 15 hud-box)": [ - [[1, 8], "a0", "dma-packet"], - [[10, 17], "a0", "gs-gif-tag"], - [21, "a0", "(pointer gs-scissor)"], - [23, "a0", "(pointer gs-reg64)"] - ], + "(method 10 hud-box)": [[[31, 77], "v1", "(inline-array vector4w)"]], + "(method 11 hud-box)": [[[31, 77], "v1", "(inline-array vector4w)"]], + "(method 12 hud-box)": [[[31, 77], "v1", "(inline-array vector4w)"]], "hud-create-icon": [[35, "a0", "process-drawable"]], "hide-hud": [ [11, "v1", "connection"], @@ -6618,14 +5923,6 @@ ], "(method 21 minimap)": [ [16, "s3", "(pointer uint128)"], - [[32, 39], "a0", "dma-packet"], - [[41, 48], "a0", "gs-gif-tag"], - [51, "a0", "(pointer gs-clamp)"], - [53, "a0", "(pointer gs-reg64)"], - [55, "a0", "(pointer gs-test)"], - [57, "a0", "(pointer gs-reg64)"], - [60, "a0", "(pointer gs-texa)"], - [62, "a0", "(pointer gs-reg64)"], [71, "s3", "(pointer uint128)"], [215, "s3", "(inline-array vector4w)"], [224, "s3", "(inline-array vector)"], @@ -6636,23 +5933,11 @@ [270, "s3", "(inline-array vector4w)"], [277, "s3", "(inline-array vector)"], [288, "s3", "(inline-array vector4w)"], - [[322, 329], "a0", "dma-packet"], - [[331, 338], "a0", "gs-gif-tag"], - [342, "a0", "(pointer gs-xy-offset)"], - [344, "a0", "(pointer gs-reg64)"], [355, "a2", "connection-minimap"], [379, "s2", "(pointer uint128)"], [400, "a2", "connection-minimap"], [424, "s3", "(pointer uint128)"], [438, "a2", "connection-minimap"], - [[453, 460], "a0", "dma-packet"], - [[462, 469], "a0", "gs-gif-tag"], - [478, "a0", "(pointer gs-frame)"], - [480, "a0", "(pointer gs-reg64)"], - [482, "a0", "(pointer gs-alpha)"], - [484, "a0", "(pointer gs-reg64)"], - [485, "a0", "(pointer gs-xy-offset)"], - [487, "a0", "(pointer gs-reg64)"], [[494, 508], "s3", "(pointer uint128)"], [508, "s3", "(inline-array vector4w)"], [517, "s3", "(inline-array vector4w)"], @@ -6708,26 +5993,8 @@ [410, "v1", "(inline-array vector4w)"] ], "(method 19 minimap)": [ - [[8, 15], "a0", "dma-packet"], - [[17, 24], "a0", "gs-gif-tag"], - [28, "s2", "(pointer gs-test)"], - [30, "s2", "(pointer gs-reg64)"], - [32, "s2", "(pointer gs-alpha)"], - [34, "s2", "(pointer gs-reg64)"], - [53, "s2", "(pointer gs-tex0)"], - [55, "s2", "(pointer gs-reg64)"], - [57, "s2", "(pointer gs-tex1)"], - [59, "s2", "(pointer gs-reg64)"], - [61, "s2", "(pointer gs-clamp)"], - [63, "s2", "(pointer gs-reg64)"], - [64, "s2", "(pointer uint64)"], - [66, "s2", "(pointer gs-reg64)"], [109, "v1", "(pointer uint128)"], [[116, 157], "v1", "(inline-array vector4w)"], - [[165, 172], "a0", "dma-packet"], - [[174, 181], "a0", "gs-gif-tag"], - [185, "a0", "(pointer gs-test)"], - [187, "a0", "(pointer gs-reg64)"], [[505, 514], "s3", "(pointer uint128)"], [[514, 596], "s3", "(inline-array vector4w)"] ], @@ -7999,69 +7266,24 @@ [67, "s0", "adgif-shader"], [69, "s0", "adgif-shader"], [71, "s0", "adgif-shader"], - [[78, 82], "a0", "dma-packet"], - [88, "a0", "gs-gif-tag"], - [90, "a0", "gs-gif-tag"], [56, "v1", "dma-gif-packet"], [59, "v1", "dma-gif-packet"], - [103, "a0", "(pointer gs-scissor)"], - [105, "a0", "(pointer gs-reg64)"], [[111, 143], "v1", "(inline-array vector4w)"], - [[174, 178], "a2", "dma-packet"], - [184, "a2", "gs-gif-tag"], - [186, "a2", "gs-gif-tag"], - [199, "a2", "(pointer gs-scissor)"], - [201, "a2", "(pointer gs-reg64)"], [[223, 253], "a1", "(inline-array vector4w)"], - [[264, 268], "a2", "dma-packet"], - [274, "a2", "gs-gif-tag"], - [276, "a2", "gs-gif-tag"], - [289, "a2", "(pointer gs-scissor)"], - [291, "a2", "(pointer gs-reg64)"], [[317, 347], "a1", "(inline-array vector4w)"], - [[358, 362], "a0", "dma-packet"], - [368, "a0", "gs-gif-tag"], - [370, "a0", "gs-gif-tag"], - [376, "a0", "(pointer gs-test)"], - [378, "a0", "(pointer gs-reg64)"], [386, "v1", "(inline-array vector4w)"], [389, "v1", "(inline-array vector4w)"], [397, "s0", "adgif-shader"], [399, "s0", "adgif-shader"], [401, "s0", "adgif-shader"], - [[424, 428], "a2", "dma-packet"], - [434, "a2", "gs-gif-tag"], - [436, "a2", "gs-gif-tag"], - [449, "a2", "(pointer gs-scissor)"], - [451, "a2", "(pointer gs-reg64)"], [[473, 503], "a1", "(inline-array vector4w)"], - [[514, 518], "a2", "dma-packet"], - [524, "a2", "gs-gif-tag"], - [526, "a2", "gs-gif-tag"], - [539, "a2", "(pointer gs-scissor)"], - [541, "a2", "(pointer gs-reg64)"], [[567, 597], "a1", "(inline-array vector4w)"], - [[608, 612], "a0", "dma-packet"], - [618, "a0", "gs-gif-tag"], - [620, "a0", "gs-gif-tag"], - [626, "a0", "(pointer gs-test)"], - [628, "a0", "(pointer gs-reg64)"], [636, "v1", "dma-gif-packet"], [639, "v1", "dma-gif-packet"], [647, "s0", "adgif-shader"], [649, "s0", "adgif-shader"], [651, "s0", "adgif-shader"], - [[689, 693], "a2", "dma-packet"], - [699, "a2", "gs-gif-tag"], - [701, "a2", "gs-gif-tag"], - [714, "a2", "(pointer gs-scissor)"], - [716, "a2", "(pointer gs-reg64)"], [[748, 777], "a1", "(inline-array vector4w)"], - [[803, 807], "a2", "dma-packet"], - [813, "a2", "gs-gif-tag"], - [815, "a2", "gs-gif-tag"], - [828, "a2", "(pointer gs-scissor)"], - [830, "a2", "(pointer gs-reg64)"], [[863, 892], "a1", "(inline-array vector4w)"] ], "merc-eye-anim": [ @@ -8076,254 +7298,80 @@ [109, "v1", "eye-control-arrays"], [121, "v1", "eye-control-arrays"], [133, "v1", "eye-control-arrays"], - [265, "v1", "eye-control-arrays"], - [159, "a0", "dma-packet"], - [160, "a0", "dma-packet"], - [162, "a0", "dma-packet"], - [169, "a0", "gs-gif-tag"], - [171, "a0", "gs-gif-tag"], - [177, "a0", "(pointer gs-test)"], - [179, "a0", "(pointer gs-reg64)"], - [204, "a0", "dma-packet"], - [205, "a0", "dma-packet"], - [207, "a0", "dma-packet"], - [214, "a0", "gs-gif-tag"], - [216, "a0", "gs-gif-tag"], - [291, "a0", "dma-packet"], - [292, "a0", "dma-packet"], - [294, "a0", "dma-packet"], - [301, "a0", "gs-gif-tag"], - [303, "a0", "gs-gif-tag"], - [309, "a0", "(pointer gs-test)"], - [311, "a0", "(pointer gs-reg64)"], - [336, "a0", "dma-packet"], - [337, "a0", "dma-packet"], - [339, "a0", "dma-packet"], - [346, "a0", "gs-gif-tag"], - [348, "a0", "gs-gif-tag"], - [363, "v1", "dma-packet"], - [364, "v1", "dma-packet"], - [231, "v1", "dma-packet"], - [232, "v1", "dma-packet"], - [230, "v1", "dma-packet"], - [362, "v1", "dma-packet"], - [222, "a0", "(pointer gs-reg64)"], - [224, "a0", "(pointer gs-reg64)"], - [354, "a0", "(pointer gs-reg64)"], - [356, "a0", "(pointer gs-reg64)"] + [265, "v1", "eye-control-arrays"] ], "render-eyes-64-different": [ [56, "v1", "dma-gif-packet"], [59, "v1", "dma-gif-packet"], [[60, 72], "s0", "adgif-shader"], - [[78, 82], "a0", "dma-packet"], - [88, "a0", "gs-gif-tag"], - [90, "a0", "gs-gif-tag"], - [103, "a0", "(pointer gs-scissor)"], - [105, "a0", "(pointer gs-reg64)"], [[111, 143], "v1", "(inline-array vector4w)"], - [[174, 178], "a2", "dma-packet"], - [184, "a2", "gs-gif-tag"], - [186, "a2", "gs-gif-tag"], - [199, "a2", "(pointer gs-scissor)"], - [201, "a2", "(pointer gs-reg64)"], [[223, 253], "a1", "(inline-array vector4w)"], [266, "v1", "dma-gif-packet"], [269, "v1", "dma-gif-packet"], [[270, 282], "s0", "adgif-shader"], - [[304, 308], "a2", "dma-packet"], - [314, "a2", "gs-gif-tag"], - [316, "a2", "gs-gif-tag"], - [329, "a2", "(pointer gs-scissor)"], - [331, "a2", "(pointer gs-reg64)"], [[357, 387], "a1", "(inline-array vector4w)"], - [[398, 402], "a0", "dma-packet"], - [408, "a0", "gs-gif-tag"], - [410, "a0", "gs-gif-tag"], - [416, "a0", "(pointer gs-test)"], - [418, "a0", "(pointer gs-reg64)"], [426, "v1", "dma-gif-packet"], [429, "v1", "dma-gif-packet"], [[430, 442], "s0", "adgif-shader"], - [[464, 468], "a2", "dma-packet"], - [474, "a2", "gs-gif-tag"], - [476, "a2", "gs-gif-tag"], - [489, "a2", "(pointer gs-scissor)"], - [491, "a2", "(pointer gs-reg64)"], [[513, 543], "a1", "(inline-array vector4w)"], [556, "v1", "dma-gif-packet"], [559, "v1", "dma-gif-packet"], [[560, 572], "s0", "adgif-shader"], - [[594, 598], "a2", "dma-packet"], - [604, "a2", "gs-gif-tag"], - [606, "a2", "gs-gif-tag"], - [619, "a2", "(pointer gs-scissor)"], - [621, "a2", "(pointer gs-reg64)"], [[647, 677], "a1", "(inline-array vector4w)"], - [[688, 692], "a0", "dma-packet"], - [698, "a0", "gs-gif-tag"], - [700, "a0", "gs-gif-tag"], - [706, "a0", "(pointer gs-test)"], - [708, "a0", "(pointer gs-reg64)"], [716, "v1", "dma-gif-packet"], [719, "v1", "dma-gif-packet"], [[720, 732], "s0", "adgif-shader"], - [[769, 773], "a2", "dma-packet"], - [779, "a2", "gs-gif-tag"], - [781, "a2", "gs-gif-tag"], - [794, "a2", "(pointer gs-scissor)"], - [796, "a2", "(pointer gs-reg64)"], [[828, 857], "a1", "(inline-array vector4w)"], [870, "v1", "dma-gif-packet"], [873, "v1", "dma-gif-packet"], [[874, 886], "s0", "adgif-shader"], - [[923, 927], "a2", "dma-packet"], - [933, "a2", "gs-gif-tag"], - [935, "a2", "gs-gif-tag"], - [948, "a2", "(pointer gs-scissor)"], - [950, "a2", "(pointer gs-reg64)"], [[983, 1012], "a1", "(inline-array vector4w)"] ], "render-eyes-32": [ [56, "v1", "dma-gif-packet"], [59, "v1", "dma-gif-packet"], [[60, 72], "s0", "adgif-shader"], - [[78, 82], "a0", "dma-packet"], - [88, "a0", "gs-gif-tag"], - [90, "a0", "gs-gif-tag"], - [103, "a0", "(pointer gs-scissor)"], - [105, "a0", "(pointer gs-reg64)"], [[111, 143], "v1", "(inline-array vector4w)"], - [[174, 178], "a2", "dma-packet"], - [184, "a2", "gs-gif-tag"], - [186, "a2", "gs-gif-tag"], - [199, "a2", "(pointer gs-scissor)"], - [201, "a2", "(pointer gs-reg64)"], [[223, 253], "a1", "(inline-array vector4w)"], - [[264, 268], "a2", "dma-packet"], - [274, "a2", "gs-gif-tag"], - [276, "a2", "gs-gif-tag"], - [289, "a2", "(pointer gs-scissor)"], - [291, "a2", "(pointer gs-reg64)"], [[317, 347], "a1", "(inline-array vector4w)"], - [[358, 362], "a0", "dma-packet"], - [368, "a0", "gs-gif-tag"], - [370, "a0", "gs-gif-tag"], - [376, "a0", "(pointer gs-test)"], - [378, "a0", "(pointer gs-reg64)"], [386, "v1", "dma-gif-packet"], [389, "v1", "dma-gif-packet"], [[390, 402], "s0", "adgif-shader"], - [[424, 428], "a2", "dma-packet"], - [434, "a2", "gs-gif-tag"], - [436, "a2", "gs-gif-tag"], - [449, "a2", "(pointer gs-scissor)"], - [451, "a2", "(pointer gs-reg64)"], [[473, 503], "a1", "(inline-array vector4w)"], - [[514, 518], "a2", "dma-packet"], - [524, "a2", "gs-gif-tag"], - [526, "a2", "gs-gif-tag"], - [539, "a2", "(pointer gs-scissor)"], - [541, "a2", "(pointer gs-reg64)"], [[567, 597], "a1", "(inline-array vector4w)"], - [[608, 612], "a0", "dma-packet"], - [618, "a0", "gs-gif-tag"], - [620, "a0", "gs-gif-tag"], - [626, "a0", "(pointer gs-test)"], - [628, "a0", "(pointer gs-reg64)"], [636, "v1", "dma-gif-packet"], [639, "v1", "dma-gif-packet"], [[642, 652], "s0", "adgif-shader"], - [[689, 693], "a2", "dma-packet"], - [699, "a2", "gs-gif-tag"], - [701, "a2", "gs-gif-tag"], - [714, "a2", "(pointer gs-scissor)"], - [716, "a2", "(pointer gs-reg64)"], [[748, 777], "a1", "(inline-array vector4w)"], - [[803, 807], "a2", "dma-packet"], - [813, "a2", "gs-gif-tag"], - [815, "a2", "gs-gif-tag"], - [828, "a2", "(pointer gs-scissor)"], - [830, "a2", "(pointer gs-reg64)"], [[863, 892], "a1", "(inline-array vector4w)"] ], "render-eyes-32-different": [ [56, "v1", "dma-gif-packet"], [59, "v1", "dma-gif-packet"], [[60, 72], "s0", "adgif-shader"], - [[78, 82], "a0", "dma-packet"], - [88, "a0", "gs-gif-tag"], - [90, "a0", "gs-gif-tag"], [[111, 143], "v1", "(inline-array vector4w)"], - [[174, 178], "a2", "dma-packet"], - [184, "a2", "gs-gif-tag"], - [186, "a2", "gs-gif-tag"], - [199, "a2", "(pointer gs-scissor)"], - [201, "a2", "(pointer gs-reg64)"], [[223, 253], "a1", "(inline-array vector4w)"], [266, "v1", "dma-gif-packet"], - [103, "a0", "(pointer gs-scissor)"], - [105, "a0", "(pointer gs-reg64)"], [269, "v1", "dma-gif-packet"], [[270, 282], "s0", "adgif-shader"], - [[304, 308], "a2", "dma-packet"], - [314, "a2", "gs-gif-tag"], - [316, "a2", "gs-gif-tag"], - [329, "a2", "(pointer gs-scissor)"], - [331, "a2", "(pointer gs-reg64)"], [[357, 387], "a1", "(inline-array vector4w)"], - [[398, 402], "a0", "dma-packet"], - [408, "a0", "gs-gif-tag"], - [410, "a0", "gs-gif-tag"], - [416, "a0", "(pointer gs-test)"], - [418, "a0", "(pointer gs-reg64)"], [426, "v1", "dma-gif-packet"], [429, "v1", "dma-gif-packet"], [[430, 442], "s0", "adgif-shader"], - [[464, 468], "a2", "dma-packet"], - [474, "a2", "gs-gif-tag"], - [476, "a2", "gs-gif-tag"], - [489, "a2", "(pointer gs-scissor)"], - [491, "a2", "(pointer gs-reg64)"], [[513, 543], "a1", "(inline-array vector4w)"], [556, "v1", "dma-gif-packet"], [559, "v1", "dma-gif-packet"], [[560, 572], "s0", "adgif-shader"], - [[594, 598], "a2", "dma-packet"], - [604, "a2", "gs-gif-tag"], - [606, "a2", "gs-gif-tag"], - [619, "a2", "(pointer gs-scissor)"], - [621, "a2", "(pointer gs-reg64)"], [[647, 677], "a1", "(inline-array vector4w)"], - [[688, 692], "a0", "dma-packet"], - [698, "a0", "gs-gif-tag"], - [700, "a0", "gs-gif-tag"], - [706, "a0", "(pointer gs-test)"], - [708, "a0", "(pointer gs-reg64)"], [716, "v1", "dma-gif-packet"], [719, "v1", "dma-gif-packet"], [[720, 732], "s0", "adgif-shader"], - [[769, 773], "a2", "dma-packet"], - [779, "a2", "gs-gif-tag"], - [781, "a2", "gs-gif-tag"], - [794, "a2", "(pointer gs-scissor)"], - [796, "a2", "(pointer gs-reg64)"], [[828, 857], "a1", "(inline-array vector4w)"], [870, "v1", "dma-gif-packet"], [873, "v1", "dma-gif-packet"], [[874, 886], "s0", "adgif-shader"], - [[923, 927], "a2", "dma-packet"], - [933, "a2", "gs-gif-tag"], - [935, "a2", "gs-gif-tag"], - [948, "a2", "(pointer gs-scissor)"], - [950, "a2", "(pointer gs-reg64)"], [[983, 1012], "a1", "(inline-array vector4w)"] ], - "debug-eyes": [ - [[4, 8], "a0", "dma-packet"], - [14, "a0", "gs-gif-tag"], - [16, "a0", "gs-gif-tag"] - ], "(code hit drill-control-panel-a)": [ [16, "v1", "art-joint-anim"], [73, "v1", "art-joint-anim"] @@ -9850,10 +8898,6 @@ "(anon-function 2 errol-chal)": [[17, "v1", "process-drawable"]], "generic-add-constants": [[[3, 17], "a0", "dma-packet"]], "generic-init-buf": [ - [[8, 15], "a0", "dma-packet"], - [[17, 24], "a0", "gs-gif-tag"], - [27, "a0", "(pointer gs-zbuf)"], - [29, "a0", "(pointer gs-reg64)"], [[36, 44], "a0", "dma-packet"], [[47, 57], "v1", "(pointer uint32)"] ], @@ -11028,9 +10072,6 @@ [76, "v1", "collide-shape-moving"] ], "etie-init-engine": [ - [[3, 10], "a0", "dma-packet"], - [[12, 19], "a0", "gs-gif-tag"], - [24, "a0", "(pointer gs-reg64)"], [[34, 48], "a0", "dma-packet"], [[58, 66], "a0", "dma-packet"], [[68, 75], "a0", "dma-packet"], @@ -11039,36 +10080,10 @@ ], "init-vortex-polys": [[[34, 40], "t0", "(pointer float)"]], "draw-vortex": [ - [[31, 38], "a0", "dma-packet"], - [[40, 47], "a0", "gs-gif-tag"], - [51, "a0", "(pointer gs-zbuf)"], - [53, "a0", "(pointer gs-reg64)"], - [55, "a0", "(pointer gs-test)"], - [57, "a0", "(pointer gs-reg64)"], - [59, "a0", "(pointer gs-rgbaq)"], - [61, "a0", "(pointer gs-reg64)"], [70, "v1", "(pointer uint128)"], [[75, 82], "a0", "vector4w"], [[83, 89], "v1", "vector4w"], - [[93, 100], "a0", "dma-packet"], - [[102, 109], "a0", "gs-gif-tag"], - [125, "s2", "(pointer gs-tex0)"], - [127, "s2", "(pointer gs-reg64)"], - [129, "s2", "(pointer gs-tex1)"], - [131, "s2", "(pointer gs-reg64)"], - [132, "s2", "(pointer gs-clamp)"], - [134, "s2", "(pointer gs-reg64)"], - [136, "s2", "(pointer gs-alpha)"], - [138, "s2", "(pointer gs-reg64)"], - [139, "s2", "(pointer uint64)"], - [141, "s2", "(pointer gs-reg64)"], [[154, 191], "s3", "dma-packet"], - [[192, 199], "a0", "dma-packet"], - [[201, 208], "a0", "gs-gif-tag"], - [212, "a0", "(pointer gs-alpha)"], - [214, "a0", "(pointer gs-reg64)"], - [216, "a0", "(pointer uint64)"], - [218, "a0", "(pointer gs-reg64)"], [[227, 264], "s3", "dma-packet"] ], "(code idle neon-baron)": [ @@ -11151,56 +10166,8 @@ [35, "v1", "(pointer uint8)"], [[23, 43], "a0", "(pointer int64)"] ], - "(method 24 bigmap)": [ - [[3, 231], "s4", "(pointer uint32)"], - [[19, 26], "a0", "dma-packet"], - [[28, 35], "a0", "gs-gif-tag"], - [41, "a0", "(pointer gs-reg64)"], - [39, "a0", "(pointer int64)"], - [[57, 64], "a0", "dma-packet"], - [[66, 73], "a0", "gs-gif-tag"], - [86, "a0", "(pointer gs-reg64)"], - [84, "a0", "(pointer int64)"], - [82, "a0", "(pointer gs-reg64)"], - [80, "a0", "(pointer gs-tex1)"], - [79, "a0", "(pointer gs-reg64)"], - [77, "a0", "(pointer gs-tex0)"], - [[115, 122], "a0", "dma-packet"], - [[124, 131], "a0", "gs-gif-tag"], - [136, "a0", "(pointer gs-reg64)"], - [134, "a0", "(pointer int64)"], - [[179, 186], "a0", "dma-packet"], - [[188, 195], "a0", "gs-gif-tag"], - [199, "a0", "(pointer gs-tex0)"], - [201, "a0", "(pointer gs-reg64)"], - [203, "a0", "(pointer gs-tex1)"], - [205, "a0", "(pointer gs-reg64)"], - [207, "a0", "(pointer int64)"], - [209, "a0", "(pointer gs-reg64)"], - [258, "a0", "(pointer int64)"], - [260, "a0", "(pointer gs-reg64)"], - [[238, 245], "a0", "dma-packet"], - [[247, 254], "a0", "gs-gif-tag"] - ], - "(method 25 bigmap)": [ - [[3, 116], "s4", "(pointer uint32)"], - [[18, 25], "a0", "dma-packet"], - [[27, 34], "a0", "gs-gif-tag"], - [[123, 130], "a0", "dma-packet"], - [[132, 139], "a0", "gs-gif-tag"], - [[61, 68], "a0", "dma-packet"], - [[70, 77], "a0", "gs-gif-tag"], - [37, "a0", "(pointer int64)"], - [39, "a0", "(pointer gs-reg64)"], - [81, "a0", "(pointer gs-tex0)"], - [83, "a0", "(pointer gs-reg64)"], - [84, "a0", "(pointer gs-tex1)"], - [86, "a0", "(pointer gs-reg64)"], - [88, "a0", "(pointer int64)"], - [90, "a0", "(pointer gs-reg64)"], - [143, "a0", "(pointer int64)"], - [145, "a0", "(pointer gs-reg64)"] - ], + "(method 24 bigmap)": [[[3, 231], "s4", "(pointer uint32)"]], + "(method 25 bigmap)": [[[3, 116], "s4", "(pointer uint32)"]], "(method 16 bigmap)": [[[9, 40], "v1", "(pointer uint8)"]], "(method 11 bigmap)": [ [179, "s3", "connection-minimap"], @@ -11208,14 +10175,6 @@ [270, "v1", "matrix"], [281, "v1", "matrix"], [293, "v1", "matrix"], - [[72, 79], "a0", "dma-packet"], - [[81, 88], "a0", "gs-gif-tag"], - [92, "a0", "(pointer gs-test)"], - [96, "a0", "(pointer int64)"], - [98, "a0", "(pointer gs-reg64)"], - [100, "a0", "(pointer int64)"], - [102, "a0", "(pointer gs-reg64)"], - [94, "a0", "(pointer gs-reg64)"], [[159, 162], "s2", "(pointer uint128)"], [388, "a0", "(pointer uint128)"], [396, "a0", "(pointer uint128)"], @@ -11244,18 +10203,6 @@ [[211, 216], "a0", "vector4w"], [[216, 232], "a0", "vector4w"] ], - "(method 22 bigmap)": [ - [[2, 9], "a0", "dma-packet"], - [[11, 17], "a0", "gs-gif-tag"], - [31, "a0", "(pointer gs-bitbltbuf)"], - [33, "a0", "(pointer gs-reg64)"], - [34, "a0", "(pointer gs-trxpos)"], - [36, "a0", "(pointer gs-reg64)"], - [42, "a0", "(pointer gs-trxreg)"], - [44, "a0", "(pointer gs-reg64)"], - [45, "a0", "(pointer gs-trxdir)"], - [47, "a0", "(pointer gs-reg64)"] - ], "(method 26 bigmap)": [ [[2, 7], "v1", "(pointer uint128)"], [[8, 12], "a0", "vector4w"], diff --git a/decompiler/config/jak2/ntsc_v1/var_names.jsonc b/decompiler/config/jak2/ntsc_v1/var_names.jsonc index 13800de283..8000d39be0 100644 --- a/decompiler/config/jak2/ntsc_v1/var_names.jsonc +++ b/decompiler/config/jak2/ntsc_v1/var_names.jsonc @@ -141,8 +141,6 @@ "gp-0": "dma-mem-begin", "s4-0": "dma-buff", "s5-0": "dma-bucket-begin", - "a0-6": ["pkt1", "dma-packet"], - "a0-8": "giftag", "a0-14": ["pkt2", "dma-packet"], "a0-16": ["pkt3", "dma-packet"], "a0-21": ["pkt4", "dma-packet"], @@ -188,6 +186,12 @@ "v1-26": "clip-result" } }, + "draw-subtitle-image": { + "vars": { + "v1-29": ["v1-29", "vector4w"], + "v1-33": ["v1-33", "vector4w"] + } + }, "(method 18 mood-control)": { "vars": { "v0-3": ["lightning-sound-id", "sound-id"] diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index 65b0ce993e..680f794267 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -194,6 +194,7 @@ set(RUNTIME_SOURCE graphics/opengl_renderer/TextureUploadHandler.cpp graphics/opengl_renderer/VisDataHandler.cpp graphics/opengl_renderer/Warp.cpp + graphics/opengl_renderer/BlitDisplays.cpp graphics/texture/jak1_tpage_dir.cpp graphics/texture/jak2_tpage_dir.cpp graphics/texture/TextureConverter.cpp diff --git a/game/graphics/opengl_renderer/BlitDisplays.cpp b/game/graphics/opengl_renderer/BlitDisplays.cpp new file mode 100644 index 0000000000..c9f9ade559 --- /dev/null +++ b/game/graphics/opengl_renderer/BlitDisplays.cpp @@ -0,0 +1,74 @@ +#include "BlitDisplays.h" + +#include "common/log/log.h" + +#include "game/graphics/opengl_renderer/OpenGLRenderer.h" +#include "game/graphics/pipelines/opengl.h" + +BlitDisplays::BlitDisplays(const std::string& name, int my_id) : BucketRenderer(name, my_id) {} + +void BlitDisplays::init_textures(TexturePool& texture_pool, GameVersion version) { + // set up target texture + u32 tbp = 0; + switch (version) { + case GameVersion::Jak2: + tbp = 0x3300; + break; + default: + ASSERT_NOT_REACHED(); + } + TextureInput in; + glGenTextures(1, &in.gpu_texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + in.w = 32; + in.h = 32; + in.debug_page_name = "PC-BLIT"; + in.debug_name = fmt::format("blit-display"); + in.id = texture_pool.allocate_pc_port_texture(version); + m_gpu_tex = texture_pool.give_texture_and_load_to_vram(in, tbp); + m_tbp = tbp; +} + +void BlitDisplays::render(DmaFollower& dma, + SharedRenderState* render_state, + ScopedProfilerNode& prof) { + auto back = render_state->back_fbo; + bool valid = back && back->valid; + + // loop through all data + while (dma.current_tag_offset() != render_state->next_bucket) { + auto data = dma.read_and_advance(); + + if (data.vifcode0().kind == VifCode::Kind::PC_PORT) { + switch (data.vifcode0().immediate) { + case 0x10: { // copy buffer->texture (tbp in vif1) + u32 tbp = data.vifcode1().immediate; + ASSERT_MSG(tbp == m_tbp, fmt::format("unexpected tbp {}", tbp)); + if (valid) { + // copy buffer texture -> custom texture + auto my_tex_id = m_gpu_tex->gpu_textures.at(0).gl; + int w = back->width, h = back->height; + + glBindTexture(GL_TEXTURE_2D, my_tex_id); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); + + glBindFramebuffer(GL_READ_FRAMEBUFFER, back->fbo_id); + glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 0, 0, w, h, 0); + glBindFramebuffer(GL_READ_FRAMEBUFFER, 0); + + m_gpu_tex->w = w; + m_gpu_tex->h = h; + render_state->texture_pool->move_existing_to_vram(m_gpu_tex, m_tbp); + } else { + lg::error("no valid back buffer to blit!"); + } + } break; + } + } + } +} + +void BlitDisplays::draw_debug_window() {} diff --git a/game/graphics/opengl_renderer/BlitDisplays.h b/game/graphics/opengl_renderer/BlitDisplays.h new file mode 100644 index 0000000000..5905d5cccc --- /dev/null +++ b/game/graphics/opengl_renderer/BlitDisplays.h @@ -0,0 +1,19 @@ +#pragma once + +#include "game/graphics/opengl_renderer/BucketRenderer.h" +#include "game/graphics/texture/TexturePool.h" + +/*! + * The BlitDisplays renderer does various blitting and effects on the previous frame + */ +class BlitDisplays : public BucketRenderer { + public: + BlitDisplays(const std::string& name, int my_id); + void render(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof) override; + void init_textures(TexturePool& texture_pool, GameVersion) override; + void draw_debug_window() override; + + private: + GpuTexture* m_gpu_tex; + u32 m_tbp; +}; diff --git a/game/graphics/opengl_renderer/BucketRenderer.h b/game/graphics/opengl_renderer/BucketRenderer.h index da050910f0..9dcfd35757 100644 --- a/game/graphics/opengl_renderer/BucketRenderer.h +++ b/game/graphics/opengl_renderer/BucketRenderer.h @@ -11,6 +11,8 @@ #include "game/graphics/opengl_renderer/loader/Loader.h" #include "game/graphics/texture/TexturePool.h" +struct Fbo; + struct LevelVis { bool valid = false; u8 data[2048]; @@ -85,6 +87,9 @@ struct SharedRenderState { int draw_offset_x = 0; int draw_offset_y = 0; + // the FBO for blit buffer + const Fbo* back_fbo = nullptr; + int bucket_for_vis_copy = 0; int num_vis_to_copy = 0; GameVersion version; diff --git a/game/graphics/opengl_renderer/DirectRenderer.cpp b/game/graphics/opengl_renderer/DirectRenderer.cpp index 1be75b1893..b776920c6c 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.cpp +++ b/game/graphics/opengl_renderer/DirectRenderer.cpp @@ -9,6 +9,10 @@ #include "third-party/fmt/core.h" #include "third-party/imgui/imgui.h" +DirectRenderer::ScissorState DirectRenderer::m_scissor; + +constexpr PerGameVersion game_height(448, 416); + DirectRenderer::DirectRenderer(const std::string& name, int my_id, int batch_size) : BucketRenderer(name, my_id), m_prim_buffer(batch_size) { glGenBuffers(1, &m_ogl.vertex_buffer); @@ -48,7 +52,7 @@ DirectRenderer::DirectRenderer(const std::string& name, int my_id, int batch_siz glEnableVertexAttribArray(3); glVertexAttribIPointer( - 3, // location 0 in the shader + 3, // location 3 in the shader 4, // 3 floats per vert GL_UNSIGNED_BYTE, // floats sizeof(Vertex), // @@ -63,6 +67,15 @@ DirectRenderer::DirectRenderer(const std::string& name, int my_id, int batch_siz sizeof(Vertex), // (void*)offsetof(Vertex, use_uv) // offset in array (why is this a pointer...) ); + + glEnableVertexAttribArray(5); + glVertexAttribPointer(5, // location 5 in the shader + 4, // 4 floats per vert + GL_FLOAT, // floats + GL_FALSE, // normalized, ignored, + sizeof(Vertex), // + (void*)offsetof(Vertex, scissor) // offset in array + ); glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); } @@ -229,6 +242,15 @@ void DirectRenderer::flush_pending(SharedRenderState* render_state, ScopedProfil glBufferData(GL_ARRAY_BUFFER, m_prim_buffer.vert_count * sizeof(Vertex), m_prim_buffer.vertices.data(), GL_STREAM_DRAW); + GLint current_shader; + GLint viewport_size[4]; + glGetIntegerv(GL_CURRENT_PROGRAM, ¤t_shader); + glGetIntegerv(GL_VIEWPORT, viewport_size); + glUniform1i(glGetUniformLocation(current_shader, "scissor_enable"), + m_scissor_enable && !m_offscreen_mode); + glUniform4f(glGetUniformLocation(current_shader, "game_sizes"), 512.0f, + game_height[render_state->version], viewport_size[2], viewport_size[3]); + int draw_count = 0; glDrawArrays(GL_TRIANGLES, 0, m_prim_buffer.vert_count); draw_count++; @@ -549,6 +571,12 @@ void DirectRenderer::render_gif(const u8* data, ASSERT(size >= 16); } + if (m_blit_buf_state.expect == 5) { + ASSERT(m_blit_buf_state.qwc * 16 == size); + m_blit_buf_state.expect = 0; + return; + } + bool eop = false; u32 offset = 0; @@ -558,6 +586,7 @@ void DirectRenderer::render_gif(const u8* data, } GifTag tag(data + offset); offset += 16; + eop = tag.eop(); // unpack registers. // faster to do it once outside of the nloop loop. @@ -630,11 +659,17 @@ void DirectRenderer::render_gif(const u8* data, offset += 8; // PACKED = quadwords } } - } else { - ASSERT(false); // format not packed or reglist. - } + } else if (format == GifTag::Format::IMAGE) { + ASSERT(m_blit_buf_state.expect == 4); + m_blit_buf_state.expect++; - eop = tag.eop(); + // dont support non-eop image transfers yet + ASSERT(eop); + // in IMAGE mode this is the amount of 2x64-bit (1 qword) we will transfer + m_blit_buf_state.qwc = tag.nloop(); + } else { + ASSERT(false); // format not packed or reglist or image + } } if (size != UINT32_MAX) { @@ -703,18 +738,15 @@ void DirectRenderer::handle_ad(const u8* data, case GsRegisterAddress::FRAME_1: handle_frame(value, render_state, prof); break; - case GsRegisterAddress::RGBAQ: - // shadow scissor does this? - { - m_prim_building.rgba_reg[0] = data[0]; - m_prim_building.rgba_reg[1] = data[1]; - m_prim_building.rgba_reg[2] = data[2]; - m_prim_building.rgba_reg[3] = data[3]; - memcpy(&m_prim_building.Q, data + 4, 4); - } - break; + case GsRegisterAddress::RGBAQ: { // shadow scissor does this? + m_prim_building.rgba_reg[0] = data[0]; + m_prim_building.rgba_reg[1] = data[1]; + m_prim_building.rgba_reg[2] = data[2]; + m_prim_building.rgba_reg[3] = data[3]; + memcpy(&m_prim_building.Q, data + 4, 4); + } break; case GsRegisterAddress::SCISSOR_1: - // fmt::print("ignoring scissor\n"); + handle_scissor(value); break; case GsRegisterAddress::XYOFFSET_1: ASSERT(render_state->version == GameVersion::Jak2); // hardcoded jak 2 scissor vals in handle @@ -723,6 +755,22 @@ void DirectRenderer::handle_ad(const u8* data, case GsRegisterAddress::COLCLAMP: ASSERT(value == 1); break; + case GsRegisterAddress::BITBLTBUF: + ASSERT(false); + handle_bitbltbuf(value); + break; + case GsRegisterAddress::TRXPOS: + ASSERT(false); + handle_trxpos(value); + break; + case GsRegisterAddress::TRXREG: + ASSERT(false); + handle_trxreg(value); + break; + case GsRegisterAddress::TRXDIR: + ASSERT(false); + handle_trxdir(value & 0x3, render_state, prof); + break; default: ASSERT_MSG(false, fmt::format("Address {} is not supported", register_address_name(addr))); } @@ -730,6 +778,14 @@ void DirectRenderer::handle_ad(const u8* data, void DirectRenderer::handle_frame(u64, SharedRenderState*, ScopedProfilerNode&) {} +void DirectRenderer::handle_scissor(u64 val) { + m_scissor.scax0 = (val >> 0) & 0x7ff; + m_scissor.scax1 = (val >> 16) & 0x7ff; + m_scissor.scay0 = (val >> 32) & 0x7ff; + m_scissor.scay1 = (val >> 48) & 0x7ff; + m_scissor_enable = true; +} + void DirectRenderer::handle_xyoffset(u64 val) { GsXYOffset xyo(val); // :ofx #x7000 :ofy #x7300 @@ -738,6 +794,78 @@ void DirectRenderer::handle_xyoffset(u64 val) { m_prim_buffer.y_off = scale * ((s32)xyo.ofy() - 0x7300) / float(UINT32_MAX); } +void DirectRenderer::handle_bitbltbuf(u64 val) { + ASSERT(m_blit_buf_state.expect == 0); + m_blit_buf_state.expect++; + + m_blit_buf_state.sbp = (val >> 0) & 0x3fff; + m_blit_buf_state.sbw = (val >> 16) & 0x3f; + m_blit_buf_state.spsm = (val >> 24) & 0x3f; + m_blit_buf_state.dbp = (val >> 32) & 0x3fff; + m_blit_buf_state.dbw = (val >> 48) & 0x3f; + m_blit_buf_state.dpsm = (val >> 56) & 0x3f; +} + +void DirectRenderer::handle_trxpos(u64 val) { + ASSERT(m_blit_buf_state.expect == 1); + m_blit_buf_state.expect++; + + m_blit_buf_state.ssax = (val >> 0) & 0x7ff; + m_blit_buf_state.ssay = (val >> 16) & 0x7ff; + m_blit_buf_state.dsax = (val >> 32) & 0x7ff; + m_blit_buf_state.dsay = (val >> 48) & 0x7ff; + m_blit_buf_state.pixel_dir = (val >> 59) & 0x3; +} + +void DirectRenderer::handle_trxreg(u64 val) { + ASSERT(m_blit_buf_state.expect == 2); + m_blit_buf_state.expect++; + + m_blit_buf_state.width = (val >> 0) & 0xfff; + m_blit_buf_state.height = (val >> 32) & 0xfff; +} + +void DirectRenderer::handle_trxdir(u64 dir, + SharedRenderState* render_state, + ScopedProfilerNode& prof) { + ASSERT(m_blit_buf_state.expect == 3); + m_blit_buf_state.expect++; + + auto get_tex_func = [&render_state](const std::string& name, u16 tbp) { + auto result = render_state->texture_pool->lookup(tbp); + if (!result) { + fmt::print("{} tbp {} not found\n", name, tbp); + } else { + fmt::print("{} tbp {} found\n", name, tbp); + } + return result; + }; + fmt::print("GS TEXTURE COPY --\n"); + fmt::print("src w/psm: {}/{} dst w/psm: {}/{}\n", m_blit_buf_state.sbw, m_blit_buf_state.spsm, + m_blit_buf_state.dbw, m_blit_buf_state.dpsm); + switch (dir) { + case 0: { // host->local + fmt::print("-- FROM EE\n"); + auto dst_tex = get_tex_func("dst", m_blit_buf_state.dbp); + // ASSERT_MSG(false, "nyi trxdir host->local"); + } break; + case 1: { // local->host + fmt::print("-- FROM GS\n"); + auto src_tex = get_tex_func("src", m_blit_buf_state.sbp); + // ASSERT_MSG(false, "nyi trxdir local->host"); + } break; + case 2: { // local->local + fmt::print("-- GS <-> GS\n"); + auto src_tex = get_tex_func("src", m_blit_buf_state.sbp); + auto dst_tex = get_tex_func("dst", m_blit_buf_state.dbp); + } break; + case 3: // disable + fmt::print("-- HUH???\n"); + ASSERT_MSG(false, "nyi trxdir disable"); + break; + } +} + void DirectRenderer::handle_tex1_1(u64 val) { GsTex1 reg(val); // for now, we aren't going to handle mipmapping. I don't think it's used with direct. @@ -1018,6 +1146,9 @@ void DirectRenderer::handle_xyzf2_common(u32 x, bool fge = m_prim_gl_state.fogging_enable; bool use_uv = m_prim_gl_state.use_uv; + math::Vector scissor(m_scissor.scax0, m_scissor.scax1, m_scissor.scay0, + m_scissor.scay1); + switch (m_prim_building.kind) { case GsPrim::Kind::SPRITE: { if (m_prim_building.building_idx == 2) { @@ -1042,12 +1173,18 @@ void DirectRenderer::handle_xyzf2_common(u32 x, auto& corner3_rgba = corner2_rgba; auto& corner4_rgba = corner2_rgba; - m_prim_buffer.push(corner1_rgba, corner1_vert, corner1_stq, 0, tcc, decal, fge, use_uv); - m_prim_buffer.push(corner3_rgba, corner3_vert, corner3_stq, 0, tcc, decal, fge, use_uv); - m_prim_buffer.push(corner2_rgba, corner2_vert, corner2_stq, 0, tcc, decal, fge, use_uv); - m_prim_buffer.push(corner2_rgba, corner2_vert, corner2_stq, 0, tcc, decal, fge, use_uv); - m_prim_buffer.push(corner4_rgba, corner4_vert, corner4_stq, 0, tcc, decal, fge, use_uv); - m_prim_buffer.push(corner1_rgba, corner1_vert, corner1_stq, 0, tcc, decal, fge, use_uv); + m_prim_buffer.push(corner1_rgba, corner1_vert, corner1_stq, scissor, 0, tcc, decal, fge, + use_uv); + m_prim_buffer.push(corner3_rgba, corner3_vert, corner3_stq, scissor, 0, tcc, decal, fge, + use_uv); + m_prim_buffer.push(corner2_rgba, corner2_vert, corner2_stq, scissor, 0, tcc, decal, fge, + use_uv); + m_prim_buffer.push(corner2_rgba, corner2_vert, corner2_stq, scissor, 0, tcc, decal, fge, + use_uv); + m_prim_buffer.push(corner4_rgba, corner4_vert, corner4_stq, scissor, 0, tcc, decal, fge, + use_uv); + m_prim_buffer.push(corner1_rgba, corner1_vert, corner1_stq, scissor, 0, tcc, decal, fge, + use_uv); m_prim_building.building_idx = 0; } } break; @@ -1063,7 +1200,8 @@ void DirectRenderer::handle_xyzf2_common(u32 x, if (advance) { for (int i = 0; i < 3; i++) { m_prim_buffer.push(m_prim_building.building_rgba[i], m_prim_building.building_vert[i], - m_prim_building.building_stq[i], tex_unit, tcc, decal, fge, use_uv); + m_prim_building.building_stq[i], scissor, tex_unit, tcc, decal, fge, + use_uv); } } } @@ -1075,7 +1213,8 @@ void DirectRenderer::handle_xyzf2_common(u32 x, m_prim_building.building_idx = 0; for (int i = 0; i < 3; i++) { m_prim_buffer.push(m_prim_building.building_rgba[i], m_prim_building.building_vert[i], - m_prim_building.building_stq[i], tex_unit, tcc, decal, fge, use_uv); + m_prim_building.building_stq[i], scissor, tex_unit, tcc, decal, fge, + use_uv); } } break; @@ -1091,7 +1230,8 @@ void DirectRenderer::handle_xyzf2_common(u32 x, } for (int i = 0; i < 3; i++) { m_prim_buffer.push(m_prim_building.building_rgba[i], m_prim_building.building_vert[i], - m_prim_building.building_stq[i], tex_unit, tcc, decal, fge, use_uv); + m_prim_building.building_stq[i], scissor, tex_unit, tcc, decal, fge, + use_uv); } } } break; @@ -1116,13 +1256,19 @@ void DirectRenderer::handle_xyzf2_common(u32 x, math::Vector di{d.x(), d.y(), d.z(), 0}; // ACB: - m_prim_buffer.push(m_prim_building.building_rgba[0], ai, {}, 0, false, false, false, false); - m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, 0, false, false, false, false); - m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, 0, false, false, false, false); + m_prim_buffer.push(m_prim_building.building_rgba[0], ai, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, scissor, 0, false, false, + false, false); // b c d - m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, 0, false, false, false, false); - m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, 0, false, false, false, false); - m_prim_buffer.push(m_prim_building.building_rgba[1], di, {}, 0, false, false, false, false); + m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[1], di, {}, scissor, 0, false, false, + false, false); // m_prim_building.building_idx = 0; @@ -1157,19 +1303,19 @@ void DirectRenderer::handle_xyzf2_common(u32 x, math::Vector di{d.x(), d.y(), d.z(), 0}; // ACB: - m_prim_buffer.push(m_prim_building.building_rgba[0], ai, {}, 0, false, false, false, - false); - m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, 0, false, false, false, - false); - m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, 0, false, false, false, - false); + m_prim_buffer.push(m_prim_building.building_rgba[0], ai, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, scissor, 0, false, false, + false, false); // b c d - m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, 0, false, false, false, - false); - m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, 0, false, false, false, - false); - m_prim_buffer.push(m_prim_building.building_rgba[1], di, {}, 0, false, false, false, - false); + m_prim_buffer.push(m_prim_building.building_rgba[1], bi, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[0], ci, {}, scissor, 0, false, false, + false, false); + m_prim_buffer.push(m_prim_building.building_rgba[1], di, {}, scissor, 0, false, false, + false, false); // } } @@ -1237,7 +1383,8 @@ DirectRenderer::PrimitiveBuffer::PrimitiveBuffer(int max_triangles) { void DirectRenderer::PrimitiveBuffer::push(const math::Vector& rgba, const math::Vector& vert, - const math::Vector& st, + const math::Vector& stq, + const math::Vector& scissor, int unit, bool tcc, bool decal, @@ -1251,11 +1398,12 @@ void DirectRenderer::PrimitiveBuffer::push(const math::Vector& rgba, v.xyzf[1] += y_off; v.xyzf[2] = (float)vert[2] / (float)0xffffff; v.xyzf[3] = (float)vert[3]; - v.stq = st; + v.stq = stq; v.tex_unit = unit; v.tcc = tcc; v.decal = decal; v.fog_enable = fog_enable; v.use_uv = use_uv; + v.scissor = scissor; vert_count++; } diff --git a/game/graphics/opengl_renderer/DirectRenderer.h b/game/graphics/opengl_renderer/DirectRenderer.h index 2b687b2f88..e6aac4dc4f 100644 --- a/game/graphics/opengl_renderer/DirectRenderer.h +++ b/game/graphics/opengl_renderer/DirectRenderer.h @@ -87,6 +87,7 @@ class DirectRenderer : public BucketRenderer { protected: virtual void handle_frame(u64 val, SharedRenderState* render_state, ScopedProfilerNode& prof); + void handle_scissor(u64 val); void handle_zbuf1(u64 val, SharedRenderState* render_state, ScopedProfilerNode& prof); void handle_test1(u64 val, SharedRenderState* render_state, ScopedProfilerNode& prof); void handle_alpha1(u64 val, SharedRenderState* render_state, ScopedProfilerNode& prof); @@ -96,6 +97,10 @@ class DirectRenderer : public BucketRenderer { void handle_tex1_1(u64 val); void handle_texa(u64 val, SharedRenderState* render_state, ScopedProfilerNode& prof); void handle_xyoffset(u64 val); + void handle_bitbltbuf(u64 val); + void handle_trxpos(u64 val); + void handle_trxreg(u64 val); + void handle_trxdir(u64 dir, SharedRenderState* render_state, ScopedProfilerNode& prof); void handle_xyzf2_common(u32 x, u32 y, u32 z, @@ -220,7 +225,9 @@ class DirectRenderer : public BucketRenderer { u8 decal; u8 fog_enable; u8 use_uv; - math::Vector pad; + math::Vector __pad; + // this can be simplified to use gs coords, if needed + math::Vector scissor; }; static_assert(sizeof(Vertex) == 64); static_assert(offsetof(Vertex, tex_unit) == 32); @@ -237,6 +244,7 @@ class DirectRenderer : public BucketRenderer { void push(const math::Vector& rgba, const math::Vector& vert, const math::Vector& stq, + const math::Vector& scissor, int unit, bool tcc, bool decal, @@ -244,6 +252,34 @@ class DirectRenderer : public BucketRenderer { bool use_uv); } m_prim_buffer; + // the scissor state tends to be shared across buckets, so it is static here + static struct ScissorState { + u16 scax0 = 0, scay0 = 0; + u16 scax1 = 0, scay1 = 0; + } m_scissor; + // however the toggle for it is per-bucket + bool m_scissor_enable = false; + + struct BufferBlitState { + // used to keep track of blit progress + u8 expect = 0; + + // blit buffer source+dest settings + u16 sbp = 0, dbp = 0; + u8 sbw = 0, dbw = 0; + u8 spsm = 0, dpsm = 0; + // transfer pos + u16 ssax = 0, dsax = 0; + u16 ssay = 0, dsay = 0; + // transfer region + u16 width = 0, height = 0; + // transfer dir + u8 pixel_dir = 0; + + // gif IMAGE transfer size + u16 qwc = 0; + } m_blit_buf_state; + struct { GLuint vertex_buffer; GLuint vao; diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.cpp b/game/graphics/opengl_renderer/OpenGLRenderer.cpp index 35846bc5ec..92276b8340 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.cpp +++ b/game/graphics/opengl_renderer/OpenGLRenderer.cpp @@ -4,6 +4,7 @@ #include "common/log/log.h" #include "common/util/FileUtil.h" +#include "game/graphics/opengl_renderer/BlitDisplays.h" #include "game/graphics/opengl_renderer/DepthCue.h" #include "game/graphics/opengl_renderer/DirectRenderer.h" #include "game/graphics/opengl_renderer/EyeRenderer.h" @@ -32,7 +33,6 @@ namespace { std::string g_current_render; - } /*! @@ -97,6 +97,7 @@ void OpenGLRenderer::init_bucket_renderers_jak2() { // 0 init_bucket_renderer("vis", BucketCategory::OTHER, BucketId::BUCKET_2); + init_bucket_renderer("blit", BucketCategory::OTHER, BucketId::BUCKET_3); init_bucket_renderer("tex-lcom-sky-pre", BucketCategory::TEX, BucketId::TEX_LCOM_SKY_PRE); init_bucket_renderer("sky-draw", BucketCategory::OTHER, BucketId::SKY_DRAW, 1024); @@ -492,6 +493,125 @@ void OpenGLRenderer::init_bucket_renderers_jak1() { m_render_state.loader->load_common(*m_render_state.texture_pool, "GAME"); } +namespace { +Fbo make_fbo(int w, int h, int msaa, bool make_zbuf_and_stencil) { + Fbo result; + bool use_multisample = msaa > 1; + + // make framebuffer object + glGenFramebuffers(1, &result.fbo_id); + glBindFramebuffer(GL_FRAMEBUFFER, result.fbo_id); + result.valid = true; + + // make texture that will hold the colors of the framebuffer + GLuint tex; + glGenTextures(1, &tex); + result.tex_id = tex; + glActiveTexture(GL_TEXTURE0); + if (use_multisample) { + glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, tex); + glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, msaa, GL_RGBA8, w, h, GL_TRUE); + } else { + glBindTexture(GL_TEXTURE_2D, tex); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); + } + // make depth and stencil buffers that will hold the... depth and stencil buffers + if (make_zbuf_and_stencil) { + GLuint zbuf; + glGenRenderbuffers(1, &zbuf); + result.zbuf_stencil_id = zbuf; + glBindRenderbuffer(GL_RENDERBUFFER, zbuf); + if (use_multisample) { + glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, GL_DEPTH24_STENCIL8, w, h); + } else { + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, w, h); + } + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, zbuf); + } + // attach texture to framebuffer as target for colors + + if (use_multisample) { + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, tex, 0); + } else { + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); + } + + GLenum render_targets[1] = {GL_COLOR_ATTACHMENT0}; + glDrawBuffers(1, render_targets); + auto status = glCheckFramebufferStatus(GL_FRAMEBUFFER); + + if (status != GL_FRAMEBUFFER_COMPLETE) { + lg::error("Failed to setup framebuffer: {} {} {} {}\n", w, h, msaa, make_zbuf_and_stencil); + switch (status) { + case GL_FRAMEBUFFER_UNDEFINED: + printf("GL_FRAMEBUFFER_UNDEFINED\n"); + break; + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: + printf("GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT\n"); + break; + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: + printf("GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\n"); + break; + case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: + printf("GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER\n"); + break; + case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: + printf("GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER\n"); + break; + case GL_FRAMEBUFFER_UNSUPPORTED: + printf("GL_FRAMEBUFFER_UNSUPPORTED\n"); + break; + case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: + printf("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE\n"); + break; + case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: + printf("GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS\n"); + break; + } + ASSERT(false); + } + + result.multisample_count = msaa; + result.multisampled = use_multisample; + result.is_window = false; + result.width = w; + result.height = h; + + return result; +} +} // namespace + +void OpenGLRenderer::blit_display() { + auto& back = m_fbo_state.resources.back_buffer; + if (!back.valid || !back.matches(*m_fbo_state.render_fbo)) { + back.clear(); + back = make_fbo(m_fbo_state.render_fbo->width, m_fbo_state.render_fbo->height, 1, false); + } + + Fbo* window_blit_src = nullptr; + if (m_fbo_state.resources.resolve_buffer.valid) { + // since this is called after do_pcrtc_effects, the resolve buffer is already made + window_blit_src = &m_fbo_state.resources.resolve_buffer; + } else { + window_blit_src = m_fbo_state.render_fbo; + } + + glBindFramebuffer(GL_READ_FRAMEBUFFER, window_blit_src->fbo_id); + glBindFramebuffer(GL_DRAW_FRAMEBUFFER, back.fbo_id); + glBlitFramebuffer(0, // srcX0 + 0, // srcY0 + window_blit_src->width, // srcX1 + window_blit_src->height, // srcY1 + 0, // dstX0 + 0, // dstY0 + back.width, // dstX1 + back.height, // dstY1 + GL_COLOR_BUFFER_BIT, // mask + GL_LINEAR // filter + ); + glBindFramebuffer(GL_FRAMEBUFFER, 0); +} + /*! * Main render function. This is called from the gfx loop with the chain passed from the game. */ @@ -535,6 +655,12 @@ void OpenGLRenderer::render(DmaFollower dma, const RenderOptions& settings) { } } + // blit framebuffer so that it can be used as a texture by the game later + { + auto prof = m_profiler.root()->make_scoped_child("blit-display"); + blit_display(); + } + m_last_pmode_alp = settings.pmode_alp_register; if (settings.draw_render_debug_window) { @@ -636,94 +762,6 @@ void OpenGLRenderer::draw_renderer_selection_window() { ImGui::End(); } -namespace { -Fbo make_fbo(int w, int h, int msaa, bool make_zbuf_and_stencil) { - Fbo result; - bool use_multisample = msaa > 1; - - // make framebuffer object - glGenFramebuffers(1, &result.fbo_id); - glBindFramebuffer(GL_FRAMEBUFFER, result.fbo_id); - result.valid = true; - - // make texture that will hold the colors of the framebuffer - GLuint tex; - glGenTextures(1, &tex); - result.tex_id = tex; - glActiveTexture(GL_TEXTURE0); - if (use_multisample) { - glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, tex); - glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, msaa, GL_RGBA8, w, h, GL_TRUE); - } else { - glBindTexture(GL_TEXTURE_2D, tex); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr); - } - // make depth and stencil buffers that will hold the... depth and stencil buffers - if (make_zbuf_and_stencil) { - GLuint zbuf; - glGenRenderbuffers(1, &zbuf); - result.zbuf_stencil_id = zbuf; - glBindRenderbuffer(GL_RENDERBUFFER, zbuf); - if (use_multisample) { - glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, GL_DEPTH24_STENCIL8, w, h); - } else { - glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, w, h); - } - glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, zbuf); - } - // attach texture to framebuffer as target for colors - - if (use_multisample) { - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, tex, 0); - } else { - glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); - } - - GLenum render_targets[1] = {GL_COLOR_ATTACHMENT0}; - glDrawBuffers(1, render_targets); - auto status = glCheckFramebufferStatus(GL_FRAMEBUFFER); - - if (status != GL_FRAMEBUFFER_COMPLETE) { - lg::error("Failed to setup framebuffer: {} {} {} {}\n", w, h, msaa, make_zbuf_and_stencil); - switch (status) { - case GL_FRAMEBUFFER_UNDEFINED: - printf("GL_FRAMEBUFFER_UNDEFINED\n"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: - printf("GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT\n"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: - printf("GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\n"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER: - printf("GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER\n"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER: - printf("GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER\n"); - break; - case GL_FRAMEBUFFER_UNSUPPORTED: - printf("GL_FRAMEBUFFER_UNSUPPORTED\n"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE: - printf("GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE\n"); - break; - case GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS: - printf("GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS\n"); - break; - } - ASSERT(false); - } - - result.multisample_count = msaa; - result.multisampled = use_multisample; - result.is_window = false; - result.width = w; - result.height = h; - - return result; -} -} // namespace - /*! * Pre-render frame setup. */ @@ -826,6 +864,7 @@ void OpenGLRenderer::setup_frame(const RenderOptions& settings) { } m_render_state.render_fb = m_fbo_state.render_fbo->fbo_id; + m_render_state.back_fbo = &m_fbo_state.resources.back_buffer; if (m_render_state.draw_region_w <= 0 || m_render_state.draw_region_h <= 0) { // trying to draw to 0 size region... opengl doesn't like this. diff --git a/game/graphics/opengl_renderer/OpenGLRenderer.h b/game/graphics/opengl_renderer/OpenGLRenderer.h index d77b1e62a8..1488bf84b3 100644 --- a/game/graphics/opengl_renderer/OpenGLRenderer.h +++ b/game/graphics/opengl_renderer/OpenGLRenderer.h @@ -71,6 +71,10 @@ struct Fbo { return valid && width == w && height == h && effective_msaa == msaa; } + bool matches(const Fbo& other) const { + return matches(other.width, other.height, other.multisample_count); + } + // Free opengl resources, if we have any. void clear() { if (valid) { @@ -116,6 +120,7 @@ class OpenGLRenderer { void dispatch_buckets_jak2(DmaFollower dma, ScopedProfilerNode& prof, bool sync_after_buckets); void do_pcrtc_effects(float alp, SharedRenderState* render_state, ScopedProfilerNode& prof); + void blit_display(); void init_bucket_renderers_jak1(); void init_bucket_renderers_jak2(); void draw_renderer_selection_window(); @@ -156,6 +161,7 @@ class OpenGLRenderer { Fbo window; // provided by glfw Fbo render_buffer; // temporary buffer to render to Fbo resolve_buffer; // temporary buffer to resolve to + Fbo back_buffer; // the previous buffer we rendered } resources; Fbo* render_fbo = nullptr; // the selected fbo from the three above to use for rendering diff --git a/game/graphics/opengl_renderer/Shader.cpp b/game/graphics/opengl_renderer/Shader.cpp index e01d086d8c..9307ac1c4d 100644 --- a/game/graphics/opengl_renderer/Shader.cpp +++ b/game/graphics/opengl_renderer/Shader.cpp @@ -18,6 +18,7 @@ Shader::Shader(const std::string& shader_name, GameVersion version) : m_name(sha vert_src = std::regex_replace(vert_src, std::regex("HEIGHT_SCALE"), height_scale); vert_src = std::regex_replace(vert_src, std::regex("SCISSOR_HEIGHT"), scissor_height); + frag_src = std::regex_replace(frag_src, std::regex("SCISSOR_HEIGHT"), scissor_height); vert_src = std::regex_replace(vert_src, std::regex("SCISSOR_ADJUST"), "(" + scissor_adjust + ")"); m_vert_shader = glCreateShader(GL_VERTEX_SHADER); diff --git a/game/graphics/opengl_renderer/shaders/direct_basic_textured.frag b/game/graphics/opengl_renderer/shaders/direct_basic_textured.frag index e0a9648654..f56096747e 100644 --- a/game/graphics/opengl_renderer/shaders/direct_basic_textured.frag +++ b/game/graphics/opengl_renderer/shaders/direct_basic_textured.frag @@ -5,11 +5,15 @@ out vec4 color; in vec4 fragment_color; in vec3 tex_coord; in flat uint use_uv; +in vec4 gs_scissor; uniform float alpha_reject; uniform float color_mult; uniform float alpha_mult; uniform float alpha_sub; uniform float ta0; +uniform int scissor_enable; +// game width, game height, viewport width, viewport height +uniform vec4 game_sizes; uniform vec4 fog_color; @@ -63,6 +67,19 @@ vec4 sample_tex_px(vec2 coordf, uint unit) { } void main() { + if (scissor_enable == 1) { + float x = gl_FragCoord.x; + float y = gl_FragCoord.y; + float w = (game_sizes.z / game_sizes.x); + float h = (game_sizes.w / game_sizes.y); + float scax0 = gs_scissor.x * w + 0.5; + float scax1 = gs_scissor.y * w + 0.5; + float scay0 = (game_sizes.y - gs_scissor.w) * h + 0.5; + float scay1 = (game_sizes.y - gs_scissor.z) * h + 0.5; + if (x < scax0 || x > scax1) discard; + if (y < scay0 || y > scay1) discard; + } + vec4 T0; if (use_uv == 1) { T0 = sample_tex_px(tex_coord.xy, tex_info.x); diff --git a/game/graphics/opengl_renderer/shaders/direct_basic_textured.vert b/game/graphics/opengl_renderer/shaders/direct_basic_textured.vert index 99cc2b6794..762af272f2 100644 --- a/game/graphics/opengl_renderer/shaders/direct_basic_textured.vert +++ b/game/graphics/opengl_renderer/shaders/direct_basic_textured.vert @@ -3,10 +3,12 @@ layout (location = 0) in vec4 position_in; layout (location = 1) in vec4 rgba_in; layout (location = 2) in vec3 tex_coord_in; +layout (location = 5) in vec4 gs_scissor_in; out vec4 fragment_color; out vec3 tex_coord; out float fog; +out vec4 gs_scissor; // putting all texture info stuff here so it's easier to copy-paste layout (location = 3) in uvec4 tex_info_in; @@ -29,4 +31,5 @@ void main() { tex_info = tex_info_in; fog = 255 - position_in.w; use_uv = use_uv_in; + gs_scissor = gs_scissor_in; } diff --git a/game/graphics/opengl_renderer/shaders/sprite_distort.frag b/game/graphics/opengl_renderer/shaders/sprite_distort.frag index 3170235a0b..00e9a6a229 100644 --- a/game/graphics/opengl_renderer/shaders/sprite_distort.frag +++ b/game/graphics/opengl_renderer/shaders/sprite_distort.frag @@ -14,7 +14,7 @@ void main() { color *= 2; // correct texture coordinates - vec2 texture_coords = vec2(tex_coord.x, (1.0f - tex_coord.y) - (1 - (448.0/512.0)) / 2); + vec2 texture_coords = vec2(tex_coord.x, (1.0f - tex_coord.y) - (1 - (SCISSOR_HEIGHT / 512.0)) / 2); // sample framebuffer texture out_color = color * texture(framebuffer_tex, texture_coords); diff --git a/game/graphics/opengl_renderer/shaders/sprite_distort.vert b/game/graphics/opengl_renderer/shaders/sprite_distort.vert index 31726c59e9..7d1aaa06bd 100644 --- a/game/graphics/opengl_renderer/shaders/sprite_distort.vert +++ b/game/graphics/opengl_renderer/shaders/sprite_distort.vert @@ -21,6 +21,7 @@ void main() { // correct xy scale transformed.x /= (256); transformed.y /= -(128); + transformed.y *= HEIGHT_SCALE; gl_Position = transformed; } diff --git a/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.frag b/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.frag index 3170235a0b..00e9a6a229 100644 --- a/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.frag +++ b/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.frag @@ -14,7 +14,7 @@ void main() { color *= 2; // correct texture coordinates - vec2 texture_coords = vec2(tex_coord.x, (1.0f - tex_coord.y) - (1 - (448.0/512.0)) / 2); + vec2 texture_coords = vec2(tex_coord.x, (1.0f - tex_coord.y) - (1 - (SCISSOR_HEIGHT / 512.0)) / 2); // sample framebuffer texture out_color = color * texture(framebuffer_tex, texture_coords); diff --git a/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.vert b/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.vert index d0d712a6df..859b6b5793 100644 --- a/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.vert +++ b/game/graphics/opengl_renderer/shaders/sprite_distort_instanced.vert @@ -49,6 +49,7 @@ void main() { // correct xy scale transformed.x /= (256); transformed.y /= -(128); + transformed.y *= HEIGHT_SCALE; gl_Position = transformed; } diff --git a/game/graphics/opengl_renderer/sprite/Sprite3.cpp b/game/graphics/opengl_renderer/sprite/Sprite3.cpp index 74a62124c3..647ca106d7 100644 --- a/game/graphics/opengl_renderer/sprite/Sprite3.cpp +++ b/game/graphics/opengl_renderer/sprite/Sprite3.cpp @@ -143,6 +143,12 @@ void Sprite3::handle_sprite_frame_setup(DmaFollower& dma, auto direct_data = dma.read_and_advance(); ASSERT(direct_data.size_bytes == 3 * 16); memcpy(m_sprite_direct_setup, direct_data.data, 3 * 16); + ASSERT(m_sprite_direct_setup[0] == 0x2000000000008001); + ASSERT(m_sprite_direct_setup[1] == 0xEEEEEEEEEEEEEEEE); + ASSERT(m_sprite_direct_setup[2] == 0x000000000005126B); + ASSERT(m_sprite_direct_setup[3] == 0x0000000000000047); + ASSERT(m_sprite_direct_setup[4] == 0x0000000000000005); + ASSERT(m_sprite_direct_setup[5] == 0x0000000000000008); // next would be the program, but it's 0 size on the PC and isn't sent. @@ -165,16 +171,6 @@ void Sprite3::handle_sprite_frame_setup(DmaFollower& dma, m_frame_data.from_jak1(jak1_data); } break; case GameVersion::Jak2: { - // in jak 2, the DirectRenderer DMA comes right before the actual sprite data(?) - // TODO might be different when distorter is running - m_direct.reset_state(); - while (dma.current_tag().qwc != (int)sizeof(SpriteFrameData) / 16) { - auto pre_frame_data = dma.read_and_advance(); - m_direct.render_vif(pre_frame_data.vif0(), pre_frame_data.vif1(), pre_frame_data.data, - pre_frame_data.size_bytes, render_state, prof); - } - m_direct.flush_pending(render_state, prof); - render_state->shaders[ShaderId::SPRITE3].activate(); auto frame_data = dma.read_and_advance(); ASSERT(frame_data.size_bytes == (int)sizeof(SpriteFrameData)); // very cool @@ -293,6 +289,27 @@ void Sprite3::render_2d_group0(DmaFollower& dma, } } +/*! + * Run the pre-sprite directrenderer. + */ +bool Sprite3::render_direct(DmaFollower& dma, + SharedRenderState* render_state, + ScopedProfilerNode& prof) { + m_direct.reset_state(); + while (dma.current_tag().qwc != 7 && dma.current_tag_offset() != render_state->next_bucket) { + auto direct_data = dma.read_and_advance(); + m_direct.render_vif(direct_data.vif0(), direct_data.vif1(), direct_data.data, + direct_data.size_bytes, render_state, prof); + } + m_direct.flush_pending(render_state, prof); + + // if sprites are off, after all the directrenderer dma, there is nothing left and we must exit + if (dma.current_tag_offset() == render_state->next_bucket) { + return true; + } + return false; +} + void Sprite3::render_fake_shadow(DmaFollower& dma) { // TODO // nop + flushe @@ -387,18 +404,26 @@ void Sprite3::render_jak2(DmaFollower& dma, ScopedProfilerNode& prof) { m_debug_stats = {}; auto data0 = dma.read_and_advance(); - ASSERT(data0.vif1() == 0 || data0.vifcode1().kind == VifCode::Kind::NOP); ASSERT(data0.vif0() == 0 || data0.vifcode0().kind == VifCode::Kind::MARK); + ASSERT(data0.vif1() == 0 || data0.vifcode1().kind == VifCode::Kind::NOP); ASSERT(data0.size_bytes == 0); if (dma.current_tag_offset() == render_state->next_bucket) { return; } - // First is the distorter (temporarily disabled for jak 2) + // Before anything else, some directrenderer DMA might have been sent { - // auto child = prof.make_scoped_child("distorter"); - // render_distorter(dma, render_state, child); + auto child = prof.make_scoped_child("direct"); + if (render_direct(dma, render_state, child)) { + return; + } + } + + // First is the distorter + { + auto child = prof.make_scoped_child("distorter"); + render_distorter(dma, render_state, child); } // next, the normal sprite stuff @@ -468,15 +493,12 @@ void Sprite3::render_jak1(DmaFollower& dma, return; } + // Before anything else, some directrenderer DMA might have been sent { - // Some DirectRenderer DMA is sent before everything else from the progress menu - m_direct.reset_state(); - while (dma.current_tag().qwc != 7) { - auto direct_data = dma.read_and_advance(); - m_direct.render_vif(direct_data.vif0(), direct_data.vif1(), direct_data.data, - direct_data.size_bytes, render_state, prof); + auto child = prof.make_scoped_child("direct"); + if (render_direct(dma, render_state, child)) { + return; } - m_direct.flush_pending(render_state, prof); } // First is the distorter diff --git a/game/graphics/opengl_renderer/sprite/Sprite3.h b/game/graphics/opengl_renderer/sprite/Sprite3.h index 2f16f0d866..a128a86173 100644 --- a/game/graphics/opengl_renderer/sprite/Sprite3.h +++ b/game/graphics/opengl_renderer/sprite/Sprite3.h @@ -5,6 +5,7 @@ #include "common/dma/gs.h" #include "common/math/Vector.h" +#include "common/versions/versions.h" #include "game/graphics/opengl_renderer/BucketRenderer.h" #include "game/graphics/opengl_renderer/DirectRenderer.h" @@ -27,10 +28,11 @@ class Sprite3 : public BucketRenderer { void opengl_setup_normal(); void opengl_setup_distort(); + bool render_direct(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof); void render_distorter(DmaFollower& dma, SharedRenderState* render_state, ScopedProfilerNode& prof); - void distort_dma(DmaFollower& dma, ScopedProfilerNode& prof); + void distort_dma(GameVersion version, DmaFollower& dma, ScopedProfilerNode& prof); void distort_setup(ScopedProfilerNode& prof); void distort_setup_instanced(ScopedProfilerNode& prof); void distort_draw(SharedRenderState* render_state, ScopedProfilerNode& prof); @@ -148,7 +150,7 @@ class Sprite3 : public BucketRenderer { std::vector m_sprite_distorter_vertices_instanced; std::map> m_sprite_distorter_instances_by_res; - u8 m_sprite_direct_setup[3 * 16]; + u64 m_sprite_direct_setup[3 * 16 / 8]; SpriteFrameData m_frame_data; // qwa: 980 Sprite3DMatrixData m_3d_matrix_data; SpriteHudMatrixData m_hud_matrix_data; diff --git a/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp b/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp index b5cd304be7..3dd39a3f43 100644 --- a/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp +++ b/game/graphics/opengl_renderer/sprite/Sprite3_Distort.cpp @@ -12,7 +12,7 @@ bool looks_like_distort_frame_data(const DmaFollower& dma) { } constexpr int SPRITE_RENDERER_MAX_DISTORT_SPRITES = - 256 * 10; // size of sprite-aux-list in GOAL code * SPRITE_MAX_AMOUNT_MULT + 256 * 12; // size of sprite-aux-list in GOAL code * SPRITE_MAX_AMOUNT_MULT } // namespace void Sprite3::opengl_setup_distort() { @@ -171,7 +171,7 @@ void Sprite3::render_distorter(DmaFollower& dma, // Read DMA { auto prof_node = prof.make_scoped_child("dma"); - distort_dma(dma, prof_node); + distort_dma(render_state->version, dma, prof_node); } if (!m_enabled || !m_distort_enable) { @@ -203,7 +203,23 @@ void Sprite3::render_distorter(DmaFollower& dma, /*! * Reads all sprite distort related DMA packets. */ -void Sprite3::distort_dma(DmaFollower& dma, ScopedProfilerNode& /*prof*/) { +void Sprite3::distort_dma(GameVersion version, DmaFollower& dma, ScopedProfilerNode& /*prof*/) { + // set the expected values per game version first + int expect_zbp, expect_th; + switch (version) { + case GameVersion::Jak1: + expect_zbp = 0x1c0; + expect_th = 8; + break; + case GameVersion::Jak2: + expect_zbp = 0x130; + expect_th = 9; + break; + default: + ASSERT(false); + return; + } + // First should be the GS setup auto sprite_distorter_direct_setup = dma.read_and_advance(); ASSERT(sprite_distorter_direct_setup.vifcode0().kind == VifCode::Kind::NOP); @@ -213,22 +229,22 @@ void Sprite3::distort_dma(DmaFollower& dma, ScopedProfilerNode& /*prof*/) { auto gif_tag = m_sprite_distorter_setup.gif_tag; ASSERT(gif_tag.nloop() == 1); - ASSERT(gif_tag.eop() == 1); + ASSERT(gif_tag.eop() == true); ASSERT(gif_tag.nreg() == 6); ASSERT(gif_tag.reg(0) == GifTag::RegisterDescriptor::AD); auto zbuf1 = m_sprite_distorter_setup.zbuf; - ASSERT(zbuf1.zbp() == 0x1c0); + ASSERT(zbuf1.zbp() == expect_zbp); ASSERT(zbuf1.zmsk() == true); ASSERT(zbuf1.psm() == TextureFormat::PSMZ24); auto tex0 = m_sprite_distorter_setup.tex0; ASSERT(tex0.tbw() == 8); ASSERT(tex0.tw() == 9); - ASSERT(tex0.th() == 8); + ASSERT(tex0.th() == expect_th); auto tex1 = m_sprite_distorter_setup.tex1; - ASSERT(tex1.mmag() == true); + ASSERT(tex1.mmag() == 1); ASSERT(tex1.mmin() == 1); auto alpha = m_sprite_distorter_setup.alpha; diff --git a/game/graphics/texture/TexturePool.cpp b/game/graphics/texture/TexturePool.cpp index 69216b50c2..f7c7f2b9c7 100644 --- a/game/graphics/texture/TexturePool.cpp +++ b/game/graphics/texture/TexturePool.cpp @@ -315,13 +315,14 @@ void TexturePool::draw_debug_window() { int total_displayed_textures = 0; int total_uploaded_textures = 0; ImGui::InputText("texture search", m_regex_input, sizeof(m_regex_input)); - std::regex regex(m_regex_input[0] ? m_regex_input : ".*"); + bool use_regex = m_regex_input[0]; + std::regex regex(use_regex ? m_regex_input : ".*"); for (size_t i = 0; i < m_textures.size(); i++) { auto& record = m_textures[i]; total_textures++; if (record.source) { - if (std::regex_search(get_debug_texture_name(record.source->tex_id), regex)) { + if (!use_regex || std::regex_search(get_debug_texture_name(record.source->tex_id), regex)) { ImGui::PushID(id++); draw_debug_for_tex(get_debug_texture_name(record.source->tex_id), record.source, i); ImGui::PopID(); @@ -350,7 +351,7 @@ void TexturePool::draw_debug_for_tex(const std::string& name, GpuTexture* tex, u } else { ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(0.8, 0.8, 0.3, 1.0)); } - if (ImGui::TreeNode(fmt::format("{} {}", name, slot).c_str())) { + if (ImGui::TreeNode(fmt::format("{}) {}", slot, name).c_str())) { ImGui::Text("P: %s sz: %d x %d", get_debug_texture_name(tex->tex_id).c_str(), tex->w, tex->h); if (!tex->is_placeholder) { ImGui::Image((void*)tex->gpu_textures.at(0).gl, ImVec2(tex->w, tex->h)); diff --git a/game/graphics/texture/TexturePool.h b/game/graphics/texture/TexturePool.h index 9a03c8b971..af2b1eb36e 100644 --- a/game/graphics/texture/TexturePool.h +++ b/game/graphics/texture/TexturePool.h @@ -12,6 +12,7 @@ #include "common/util/SmallVector.h" #include "common/versions/versions.h" +#include "game/graphics/pipelines/opengl.h" #include "game/graphics/texture/TextureConverter.h" // verify all texture lookups. @@ -140,7 +141,7 @@ class TextureMap { * The lowest level reference to texture data. */ struct TextureData { - u64 gl = -1; // the OpenGL texture ID + GLuint gl = -1; // the OpenGL texture ID const u8* data = nullptr; // pointer to texture data (owned by the loader) }; @@ -196,7 +197,7 @@ struct GpuTexture { * source will be non-null and the gpu_texture will be a placeholder that is safe to use. */ struct TextureVRAMReference { - u64 gpu_texture = -1; // the OpenGL texture to use when rendering. + GLuint gpu_texture = -1; // the OpenGL texture to use when rendering. GpuTexture* source = nullptr; }; @@ -209,7 +210,7 @@ struct TextureInput { PcTextureId id; - u64 gpu_texture = -1; + GLuint gpu_texture = -1; bool common = false; const u8* src_data; u16 w, h; diff --git a/goal_src/jak2/engine/collide/collide-probe.gc b/goal_src/jak2/engine/collide/collide-probe.gc index e66505eb35..fc253d7d25 100644 --- a/goal_src/jak2/engine/collide/collide-probe.gc +++ b/goal_src/jak2/engine/collide/collide-probe.gc @@ -133,7 +133,7 @@ a number of functions require a bunch of annoying casts/mips2c stuff, but are un (define *collide-probe-stack* (the-as collide-probe-stack (+ 4192 #x70000000))) -(define collide-vu0-block (new 'static 'vu-function :length 90 :qlength 45)) +(define collide-vu0-block (new 'static 'vu-function)) ;; definition for function collide-probe-node ;; ERROR: function was not converted to expressions. Cannot decompile. diff --git a/goal_src/jak2/engine/debug/debug.gc b/goal_src/jak2/engine/debug/debug.gc index 50b4a61725..c8731b0889 100644 --- a/goal_src/jak2/engine/debug/debug.gc +++ b/goal_src/jak2/engine/debug/debug.gc @@ -629,68 +629,68 @@ Most functions take a boolean as their first argument. If the boolean is set to (with-dma-buffer-add-bucket ((buf (-> *display* frames (-> *display* on-screen) debug-buf)) bucket ) - (let ((p0 (new 'stack 'vector4w))) - (let ((p1 (new 'stack 'vector4w))) - (set! (-> p0 quad) (-> start quad)) - (set! (-> p1 quad) (-> end quad)) - (set! (-> p0 x) (the-as int (* (+ (-> p0 x) 2048) 16))) - (set! (-> p0 y) (* -16 (the-as int (- 2048 (the-as int (-> p0 y)))))) - (set! (-> p0 z) #x7fffff) - (set! (-> p1 x) (the-as int (* (+ (-> p1 x) 2048) 16))) - (set! (-> p1 y) (* -16 (the-as int (- 2048 (the-as int (-> p1 y)))))) - (set! (-> p1 z) #x7fffff) - (let ((a0-18 (the-as (pointer uint64) (-> buf base)))) - (let* ((a1-7 buf) - (a2-3 (the-as dma-packet (-> a1-7 base))) - ) - (set! (-> a2-3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> a2-3 vif0) (new 'static 'vif-tag)) - (set! (-> a2-3 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-7 base) (&+ (the-as pointer a2-3) 16)) - ) - (let* ((a1-8 buf) - (giftag (the-as gs-gif-tag (-> a1-8 base))) - ) - (set! (-> giftag tag) (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) - :nreg #x4 - ) - ) - (set! (-> giftag regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id xyzf2) - :regs2 (gif-reg-id rgbaq) - :regs3 (gif-reg-id xyzf2) - ) - ) - (set! (-> a1-8 base) (&+ (the-as pointer giftag) 16)) - ) - (let* ((a1-9 buf) - (v0 (the-as vector4w-2 (-> a1-9 base))) - ) - (set! (-> v0 vector 0 quad) (-> color quad)) - (set! (-> v0 vector 1 quad) (-> p0 quad)) - (set! (-> a1-9 base) (&+ (the-as pointer v0) 32)) - ) - (let* ((a1-10 buf) - (v1 (the-as vector4w-2 (-> a1-10 base))) - ) - (set! (-> v1 vector 0 quad) (-> color quad)) - (set! (-> v1 vector 1 quad) (-> p1 quad)) - (set! (-> a1-10 base) (&+ (the-as pointer v1) 32)) - ) - (let ((a1-14 (/ (the-as int (+ (- -16 (the-as int a0-18)) (the-as int (-> buf base)))) 16))) - (cond - ((nonzero? a1-14) - (logior! (-> a0-18 0) (shr (shl a1-14 48) 48)) - (logior! (-> a0-18 1) (shl (shr (shl a1-14 48) 48) 32)) + (let ((p0 (new 'stack 'vector4w)) + (p1 (new 'stack 'vector4w)) + ) + (set! (-> p0 quad) (-> start quad)) + (set! (-> p1 quad) (-> end quad)) + (set! (-> p0 x) (* (+ (-> p0 x) 2048) 16)) + (set! (-> p0 y) (* -16 (- 2048 (-> p0 y)))) + (set! (-> p0 z) #x7fffff) + (set! (-> p1 x) (* (+ (-> p1 x) 2048) 16)) + (set! (-> p1 y) (* -16 (- 2048 (-> p1 y)))) + (set! (-> p1 z) #x7fffff) + (let ((a0-18 (the-as (pointer uint64) (-> buf base)))) + (let* ((a1-7 buf) + (a2-3 (the-as dma-packet (-> a1-7 base))) ) - (else - (set! (-> buf base) a0-18) + (set! (-> a2-3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> a2-3 vif0) (new 'static 'vif-tag)) + (set! (-> a2-3 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) + (set! (-> a1-7 base) (&+ (the-as pointer a2-3) 16)) + ) + (let* ((a1-8 buf) + (giftag (the-as gs-gif-tag (-> a1-8 base))) + ) + (set! (-> giftag tag) (new 'static 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) + :nreg #x4 + ) ) + (set! (-> giftag regs) (new 'static 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id xyzf2) + :regs2 (gif-reg-id rgbaq) + :regs3 (gif-reg-id xyzf2) + ) + ) + (set! (-> a1-8 base) (&+ (the-as pointer giftag) 16)) + ) + (let* ((a1-9 buf) + (v0 (the-as vector4w-2 (-> a1-9 base))) + ) + (set! (-> v0 vector 0 quad) (-> color quad)) + (set! (-> v0 vector 1 quad) (-> p0 quad)) + (set! (-> a1-9 base) (&+ (the-as pointer v0) 32)) + ) + (let* ((a1-10 buf) + (v1 (the-as vector4w-2 (-> a1-10 base))) + ) + (set! (-> v1 vector 0 quad) (-> color quad)) + (set! (-> v1 vector 1 quad) (-> p1 quad)) + (set! (-> a1-10 base) (&+ (the-as pointer v1) 32)) + ) + (let ((a1-14 (/ (the-as int (+ (- -16 (the-as int a0-18)) (the-as int (-> buf base)))) 16))) + (cond + ((nonzero? a1-14) + (logior! (-> a0-18 0) (shr (shl a1-14 48) 48)) + (logior! (-> a0-18 1) (shl (shr (shl a1-14 48) 48) 32)) + ) + (else + (set! (-> buf base) a0-18) ) ) ) @@ -900,8 +900,8 @@ Most functions take a boolean as their first argument. If the boolean is set to (set! (-> v1-2 pos quad) (-> position quad)) (cond (screen-offset - (set! (-> v1-2 offset x) (the-as int (-> screen-offset x))) - (set! (-> v1-2 offset y) (the-as int (-> screen-offset y))) + (set! (-> v1-2 offset x) (-> screen-offset x)) + (set! (-> v1-2 offset y) (-> screen-offset y)) ) (else (set! (-> v1-2 offset x) 0) @@ -1759,39 +1759,18 @@ Most functions take a boolean as their first argument. If the boolean is set to (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf)) buf ) - (let ((v1-16 s4-0)) - (let ((a0-3 (the-as dma-packet (-> v1-16 base)))) - (set! (-> a0-3 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-3 vif0) (new 'static 'vif-tag)) - (set! (-> a0-3 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-16 base) (the-as pointer (the-as dma-packet (&+ a0-3 16)))) - ) - ) - (let ((v1-17 s4-0)) - (let ((a0-5 (the-as gs-gif-tag (-> v1-17 base)))) - (set! (-> a0-5 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-5 regs) GIF_REGS_ALL_AD) - (set! (-> v1-17 base) (the-as pointer (the-as gs-gif-tag (&+ a0-5 16)))) - ) - ) - (let ((v1-18 s4-0)) - (let ((a0-7 (-> v1-18 base))) - (set! (-> (the-as (pointer gs-zbuf) a0-7) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a0-7) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-7) 2) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-7) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-7) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-7) 5) (gs-reg64 alpha-1)) - (set! (-> v1-18 base) (&+ a0-7 48)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) (set! sv-16 (-> s4-0 base)) (&+! (-> s4-0 base) 16) (add-boundary-shader (new 'static 'texture-id :index #x3 :page #x70c) s4-0) diff --git a/goal_src/jak2/engine/draw/drawable.gc b/goal_src/jak2/engine/draw/drawable.gc index b445e80b60..ee402d27c6 100644 --- a/goal_src/jak2/engine/draw/drawable.gc +++ b/goal_src/jak2/engine/draw/drawable.gc @@ -1600,46 +1600,17 @@ (let* ((a0-8 (-> *display* frames (-> *display* on-screen) global-buf)) (a3-3 (-> a0-8 base)) ) - (let* ((t0-0 a0-8) - (t1-0 (the-as dma-packet (-> t0-0 base))) - ) - (set! (-> t1-0 dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> t1-0 vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> t1-0 vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-0 base) (the-as pointer (&+ t1-0 16))) - ) - (let* ((t0-1 a0-8) - (t1-2 (the-as object (-> t0-1 base))) - ) - (set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag t1-2) regs) GIF_REGS_ALL_AD) - (set! (-> t0-1 base) (&+ (the-as pointer t1-2) 16)) - ) - (let* ((t0-2 a0-8) - (t1-4 (-> t0-2 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) t1-4) 0) arg1) - (set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) t1-4) 2) arg2) - (set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) t1-4) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 5) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) t1-4) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 7) (gs-reg64 pabe)) - (set! (-> (the-as (pointer gs-clamp) t1-4) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) t1-4) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-tex0) t1-4) 10) (new 'static 'gs-tex0 :tbp0 #x60)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 11) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) t1-4) 12) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 13) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-texclut) t1-4) 14) (new 'static 'gs-texclut :cbw #x4)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 15) (gs-reg64 texclut)) - (set! (-> (the-as (pointer uint64) t1-4) 16) (the-as uint *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 17) (gs-reg64 fogcol)) - (set! (-> t0-2 base) (&+ t1-4 144)) - ) + (dma-buffer-add-gs-set-flusha a0-8 + (zbuf-1 arg1) + (test-1 arg2) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) (let ((a1-18 (the-as object (-> a0-8 base)))) (set! (-> (the-as dma-packet a1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> v1-6 next))) (set! (-> (the-as dma-packet a1-18) vif0) (new 'static 'vif-tag)) @@ -1659,46 +1630,17 @@ (let* ((a3-2 (-> *display* frames (-> *display* on-screen) global-buf)) (a0-8 (-> a3-2 base)) ) - (let* ((t0-1 a3-2) - (t1-0 (the-as dma-packet (-> t0-1 base))) - ) - (set! (-> t1-0 dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> t1-0 vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> t1-0 vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-1 base) (the-as pointer (&+ t1-0 16))) - ) - (let* ((t0-2 a3-2) - (t1-2 (the-as object (-> t0-2 base))) - ) - (set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag t1-2) regs) GIF_REGS_ALL_AD) - (set! (-> t0-2 base) (&+ (the-as pointer t1-2) 16)) - ) - (let* ((t0-3 a3-2) - (t1-4 (-> t0-3 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) t1-4) 0) arg1) - (set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) t1-4) 2) arg2) - (set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) t1-4) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 5) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) t1-4) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 7) (gs-reg64 pabe)) - (set! (-> (the-as (pointer gs-clamp) t1-4) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) t1-4) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-tex0) t1-4) 10) (new 'static 'gs-tex0 :tbp0 #x60)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 11) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) t1-4) 12) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 13) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-texclut) t1-4) 14) (new 'static 'gs-texclut :cbw #x4)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 15) (gs-reg64 texclut)) - (set! (-> (the-as (pointer uint64) t1-4) 16) (the-as uint *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 17) (gs-reg64 fogcol)) - (set! (-> t0-3 base) (&+ t1-4 144)) - ) + (dma-buffer-add-gs-set-flusha a3-2 + (zbuf-1 arg1) + (test-1 arg2) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) (let ((t0-4 (-> a3-2 base))) (let ((a1-18 (the-as object (-> a3-2 base)))) (set! (-> (the-as dma-packet a1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next))) diff --git a/goal_src/jak2/engine/game/main.gc b/goal_src/jak2/engine/game/main.gc index 8a3e7a07bf..df0279344e 100644 --- a/goal_src/jak2/engine/game/main.gc +++ b/goal_src/jak2/engine/game/main.gc @@ -353,30 +353,9 @@ (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf)) (-> obj bucket) ) - (let ((v1-7 s4-0)) - (let ((a0-2 (the-as object (-> v1-7 base)))) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-7 base) (&+ (the-as pointer a0-2) 16)) - ) - ) - (let ((v1-8 s4-0)) - (let ((a0-4 (the-as object (-> v1-8 base)))) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-8 base) (&+ (the-as pointer a0-4) 16)) - ) - ) - (let ((v1-9 s4-0)) - (let ((a0-6 (-> v1-9 base))) - (set! (-> (the-as (pointer gs-test) a0-6) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 test-1)) - (set! (-> v1-9 base) (&+ a0-6 16)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((t1-0 (new 'static 'rgba :r (the int (-> obj color x)) :g (the int (-> obj color y)) @@ -1599,7 +1578,7 @@ ) ;; generate DMA data for doing the main blit - ; (blit-displays) + (blit-displays) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; END of normal frame diff --git a/goal_src/jak2/engine/game/settings.gc b/goal_src/jak2/engine/game/settings.gc index bc8f8522a1..4e0a6292b6 100644 --- a/goal_src/jak2/engine/game/settings.gc +++ b/goal_src/jak2/engine/game/settings.gc @@ -1215,7 +1215,7 @@ (set! (-> *video-params* display-dy) (* (/ (-> s4-0 display-dy) 2) 2)) ) (set! (-> *blit-displays-work* horizontal-flip-flag) - (the-as basic (logtest? (-> *game-info* secrets) (game-secrets hflip-screen))) + (logtest? (-> *game-info* secrets) (game-secrets hflip-screen)) ) (set! (-> s5-0 allow-blackout) (-> s4-0 allow-blackout)) (set! (-> s5-0 bg-a-speed) (-> s4-0 bg-a-speed)) diff --git a/goal_src/jak2/engine/gfx/background/background.gc b/goal_src/jak2/engine/gfx/background/background.gc index d9db6683e9..e64808d842 100644 --- a/goal_src/jak2/engine/gfx/background/background.gc +++ b/goal_src/jak2/engine/gfx/background/background.gc @@ -10,7 +10,7 @@ (define *background-work* (new 'global 'background-work)) ;; identical to Jak 1's VU0 program here. -(define background-vu0-block (new 'static 'vu-function :length 59 :qlength 30)) +(define background-vu0-block (new 'static 'vu-function)) (defun background-upload-vu0 () ;; (upload-vu0-program background-vu0-block (&-> *background-work* wait-to-vu0)) diff --git a/goal_src/jak2/engine/gfx/blit-displays-h.gc b/goal_src/jak2/engine/gfx/blit-displays-h.gc index df0a2a3432..f3d1484166 100644 --- a/goal_src/jak2/engine/gfx/blit-displays-h.gc +++ b/goal_src/jak2/engine/gfx/blit-displays-h.gc @@ -12,25 +12,25 @@ ;; DECOMP BEGINS (deftype blit-displays-work (structure) - ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) - (sprite-tmpl dma-gif-packet :inline :offset-assert 32) - (sprite-slow-tmpl dma-gif-packet :inline :offset-assert 64) - (line-tmpl dma-gif-packet :inline :offset-assert 96) - (scan-tmpl dma-gif-packet :inline :offset-assert 128) - (color vector4w :inline :offset-assert 160) - (line-color uint64 :offset-assert 176) - (scan-colors vector4w 15 :inline :offset-assert 192) - (menu-mode basic :offset-assert 432) - (screen-copied basic :offset-assert 436) - (vu1-enable-user-menu uint64 :offset-assert 440) - (texture-enable-user-menu uint32 :offset-assert 448) - (count-down uint32 :offset-assert 452) - (horizontal-flip-flag basic :offset-assert 456) - (scan-alpha float :offset-assert 460) - (scanline uint32 :offset-assert 464) - (progress-interp float :offset-assert 468) - (progress-interp-dest float :offset-assert 472) - (progress-interp-speed float :offset-assert 476) + ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) + (sprite-tmpl dma-gif-packet :inline :offset-assert 32) + (sprite-slow-tmpl dma-gif-packet :inline :offset-assert 64) + (line-tmpl dma-gif-packet :inline :offset-assert 96) + (scan-tmpl dma-gif-packet :inline :offset-assert 128) + (color vector4w :inline :offset-assert 160) + (line-color uint64 :offset-assert 176) + (scan-colors vector4w 15 :inline :offset-assert 192) + (menu-mode symbol :offset-assert 432) + (screen-copied symbol :offset-assert 436) + (vu1-enable-user-menu vu1-renderer-mask :offset-assert 440) + (texture-enable-user-menu uint32 :offset-assert 448) + (count-down uint32 :offset-assert 452) + (horizontal-flip-flag symbol :offset-assert 456) + (scan-alpha float :offset-assert 460) + (scanline uint32 :offset-assert 464) + (progress-interp float :offset-assert 468) + (progress-interp-dest float :offset-assert 472) + (progress-interp-speed float :offset-assert 476) ) :method-count-assert 9 :size-assert #x1e0 diff --git a/goal_src/jak2/engine/gfx/blit-displays.gc b/goal_src/jak2/engine/gfx/blit-displays.gc index ebc937a151..22b60af0a7 100644 --- a/goal_src/jak2/engine/gfx/blit-displays.gc +++ b/goal_src/jak2/engine/gfx/blit-displays.gc @@ -5,66 +5,114 @@ ;; name in dgo: blit-displays ;; dgos: ENGINE, GAME -(define *blit-displays-work* (new 'static 'blit-displays-work - :adgif-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x1000000000008005 #xe) - ) - :sprite-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x51 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x51 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x508b400000008010 #x53531) - ) - :sprite-slow-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x508b400000008001 #x53531) - ) - :line-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x41 :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x41 :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x2020c00000008020 #x55) - ) - :scan-tmpl (new 'static 'dma-gif-packet - :dma-vif (new 'static 'dma-packet - :dma (new 'static 'dma-tag :qwc #x4c :id (dma-tag-id cnt)) - :vif1 (new 'static 'vif-tag :imm #x4c :cmd (vif-cmd direct) :msk #x1) - ) - :gif (new 'static 'array uint64 2 #x5020c0000000800f #x55551) - ) - :color (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80) - :line-color #x3f80000000000000 - :scan-colors (new 'static 'inline-array vector4w 15 - (new 'static 'vector4w :y 1 :z 1) - (new 'static 'vector4w :y 1 :z 1) - (new 'static 'vector4w :y 1 :z 1) - (new 'static 'vector4w :y 1 :z 1) - (new 'static 'vector4w :x 1 :y 3 :z 2) - (new 'static 'vector4w :x 1 :y 4 :z 3) - (new 'static 'vector4w :x 2 :y 6 :z 5) - (new 'static 'vector4w :x 3 :y 8 :z 7) - (new 'static 'vector4w :x 5 :y 11 :z 10) - (new 'static 'vector4w :x 6 :y 14 :z 13) - (new 'static 'vector4w :x 9 :y 20 :z 17) - (new 'static 'vector4w :x 13 :y 27 :z 21) - (new 'static 'vector4w :x 17 :y 36 :z 24) - (new 'static 'vector4w :x 22 :y 45 :z 28) - (new 'static 'vector4w :x 32 :y 63 :z 32) - ) - :menu-mode #f - :screen-copied #f - :horizontal-flip-flag #f - ) +(define *blit-displays-work* + (new 'static 'blit-displays-work + :adgif-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) ) + :gif0 (new 'static 'gif-tag64 :nloop #x5 :eop #x1 :nreg #x1) + :gif1 (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)) + ) + :sprite-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x51 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x51 :cmd (vif-cmd direct) :msk #x1) + ) + :gif0 (new 'static 'gif-tag64 + :nloop #x10 + :eop #x1 + :pre #x1 + :prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :fst #x1) + :nreg #x5 + ) + :gif1 (new 'static 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id uv) + :regs2 (gif-reg-id xyz2) + :regs3 (gif-reg-id uv) + :regs4 (gif-reg-id xyz2) + ) + ) + :sprite-slow-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1) + ) + :gif0 (new 'static 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :fst #x1) + :nreg #x5 + ) + :gif1 (new 'static 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id uv) + :regs2 (gif-reg-id xyz2) + :regs3 (gif-reg-id uv) + :regs4 (gif-reg-id xyz2) + ) + ) + :line-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x41 :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x41 :cmd (vif-cmd direct) :msk #x1) + ) + :gif0 (new 'static 'gif-tag64 + :nloop #x20 + :eop #x1 + :pre #x1 + :prim (new 'static 'gs-prim :prim (gs-prim-type line) :abe #x1) + :nreg #x2 + ) + :gif1 (new 'static 'gif-tag-regs :regs0 (gif-reg-id xyz2) :regs1 (gif-reg-id xyz2)) + ) + :scan-tmpl (new 'static 'dma-gif-packet + :dma-vif (new 'static 'dma-packet + :dma (new 'static 'dma-tag :qwc #x4c :id (dma-tag-id cnt)) + :vif1 (new 'static 'vif-tag :imm #x4c :cmd (vif-cmd direct) :msk #x1) + ) + :gif0 (new 'static 'gif-tag64 + :nloop #xf + :eop #x1 + :pre #x1 + :prim (new 'static 'gs-prim :prim (gs-prim-type line) :abe #x1) + :nreg #x5 + ) + :gif1 (new 'static 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id xyz2) + :regs2 (gif-reg-id xyz2) + :regs3 (gif-reg-id xyz2) + :regs4 (gif-reg-id xyz2) + ) + ) + :color (new 'static 'vector4w :x #x80 :y #x80 :z #x80 :w #x80) + :line-color #x3f80000000000000 + :scan-colors (new 'static 'inline-array vector4w 15 + (new 'static 'vector4w :y 1 :z 1) + (new 'static 'vector4w :y 1 :z 1) + (new 'static 'vector4w :y 1 :z 1) + (new 'static 'vector4w :y 1 :z 1) + (new 'static 'vector4w :x 1 :y 3 :z 2) + (new 'static 'vector4w :x 1 :y 4 :z 3) + (new 'static 'vector4w :x 2 :y 6 :z 5) + (new 'static 'vector4w :x 3 :y 8 :z 7) + (new 'static 'vector4w :x 5 :y 11 :z 10) + (new 'static 'vector4w :x 6 :y 14 :z 13) + (new 'static 'vector4w :x 9 :y 20 :z 17) + (new 'static 'vector4w :x 13 :y 27 :z 21) + (new 'static 'vector4w :x 17 :y 36 :z 24) + (new 'static 'vector4w :x 22 :y 45 :z 28) + (new 'static 'vector4w :x 32 :y 63 :z 32) + ) + :menu-mode #f + :screen-copied #f + :horizontal-flip-flag #f + ) + ) ;; hack @@ -74,5 +122,60 @@ ) +;; not the real thing. just a temp hack. +(defun blit-displays () + (local-vars (v1-182 uint) (v1-183 int)) + (let ((gp-0 *blit-displays-work*)) + (when (zero? (-> gp-0 count-down)) + (cond + ((and (-> gp-0 menu-mode) (not (-> gp-0 screen-copied))) + (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id bucket-3) + ) + (fx-copy-buf s4-0) + ) + (set! (-> gp-0 vu1-enable-user-menu) (-> *display* vu1-enable-user-menu)) + (set! (-> *display* vu1-enable-user-menu) (vu1-renderer-mask merc)) ;;(vu1-renderer-mask generic)) + (set! (-> *display* vu1-enable-user) (vu1-renderer-mask merc)) ;;(vu1-renderer-mask generic)) + (set! (-> gp-0 texture-enable-user-menu) (the-as uint (-> *texture-pool* texture-enable-user-menu))) + (set! (-> *texture-pool* texture-enable-user-menu) (texture-enable-mask shrub water map)) + (set! (-> *texture-pool* texture-enable-user) (texture-enable-mask shrub water map)) + (set! (-> gp-0 count-down) (the-as uint 3)) + (set! (-> gp-0 screen-copied) #t) + (set! (-> gp-0 progress-interp) 0.0) + (set! (-> gp-0 progress-interp-dest) 1.0) + (set! (-> gp-0 progress-interp-speed) 0.033333335) + ) + ((and (not (-> gp-0 menu-mode)) (-> gp-0 screen-copied)) + (set! (-> *display* vu1-enable-user-menu) (-> gp-0 vu1-enable-user-menu)) + (set! (-> *texture-pool* texture-enable-user-menu) + (the-as texture-enable-mask (-> gp-0 texture-enable-user-menu)) + ) + (set! (-> gp-0 count-down) (the-as uint 3)) + (set! (-> gp-0 screen-copied) #f) + ) + ) + ) + (when (and (-> *setting-control* user-current render) (>= (the-as uint 1) (-> gp-0 count-down))) + (when (and (-> gp-0 horizontal-flip-flag) (not (-> gp-0 menu-mode))) + ) + ) + (let ((a1-23 (-> *time-of-day-context* filter))) + (when (and (or (!= (-> a1-23 x) 1.0) (!= (-> a1-23 y) 1.0) (!= (-> a1-23 z) 1.0)) (not (-> gp-0 menu-mode))) + ) + ) + (cond + ((and (-> *setting-control* user-current render) (zero? (-> gp-0 count-down))) + ) + (else + ) + ) + (if (nonzero? (-> gp-0 count-down)) + (+! (-> gp-0 count-down) -1) + ) + ) + (none) + ) + ;; DECOMP BEGINS diff --git a/goal_src/jak2/engine/gfx/foreground/bones.gc b/goal_src/jak2/engine/gfx/foreground/bones.gc index ae0b4b4a50..c48b67ba26 100644 --- a/goal_src/jak2/engine/gfx/foreground/bones.gc +++ b/goal_src/jak2/engine/gfx/foreground/bones.gc @@ -62,7 +62,7 @@ this is done by a linked list of "bone calculations", which is stashed in the dm (bone-list-init) ;; VU0 microprogram for bone calculations. -(define bones-vu0-block (new 'static 'vu-function :length 54 :qlength 27)) +(define bones-vu0-block (new 'static 'vu-function)) (defun bones-set-sqwc () "Set the sqwc register so the DMA transfer of joints skips the metadata and just transfers the bind-pose." diff --git a/goal_src/jak2/engine/gfx/foreground/eye.gc b/goal_src/jak2/engine/gfx/foreground/eye.gc index 0449912556..78ba1ca077 100644 --- a/goal_src/jak2/engine/gfx/foreground/eye.gc +++ b/goal_src/jak2/engine/gfx/foreground/eye.gc @@ -85,30 +85,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -122,30 +99,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-6 (* 256.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -162,30 +116,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-26) 6) a3-9 t1-0 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-30 arg0) - (a2-17 (the-as object (-> a1-30 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-30 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-31 arg0) - (a2-19 (the-as object (-> a1-31 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-31 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-32 arg0) - (a2-21 (-> a1-32 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-32 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-10 (* 256.0 (-> arg1 right iris-scale))) (a1-34 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -204,30 +137,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-32 arg0) - (a0-32 (the-as object (-> v1-32 base))) - ) - (set! (-> (the-as dma-packet a0-32) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-32) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-32) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-32 base) (&+ (the-as pointer a0-32) 16)) - ) - (let* ((v1-33 arg0) - (a0-34 (the-as object (-> v1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a0-34) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-34) regs) GIF_REGS_ALL_AD) - (set! (-> v1-33 base) (&+ (the-as pointer a0-34) 16)) - ) - (let* ((v1-34 arg0) - (a0-36 (-> v1-34 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-36) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 test-1)) - (set! (-> v1-34 base) (&+ a0-36 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-1 (-> arg1 shaders 1))) (let ((v1-36 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-36) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -245,30 +157,7 @@ (let ((v1-43 (ash 16 (-> s1-1 tex0 tw))) (a0-48 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-47 arg0) - (a2-27 (the-as object (-> a1-47 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-47 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-48 arg0) - (a2-29 (the-as object (-> a1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-48 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-49 arg0) - (a2-31 (-> a1-49 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-49 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-14 (* 256.0 (-> arg1 left pupil-scale))) (a1-51 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -285,30 +174,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-51) 6) a3-30 t1-3 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-55 arg0) - (a2-37 (the-as object (-> a1-55 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-55 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-56 arg0) - (a2-39 (the-as object (-> a1-56 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-56 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-57 arg0) - (a2-41 (-> a1-57 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-57 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-18 (* 256.0 (-> arg1 right pupil-scale))) (a1-59 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -328,30 +196,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-47 arg0) - (a0-50 (the-as object (-> v1-47 base))) - ) - (set! (-> (the-as dma-packet a0-50) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-50) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-50) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-47 base) (&+ (the-as pointer a0-50) 16)) - ) - (let* ((v1-48 arg0) - (a0-52 (the-as object (-> v1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a0-52) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-52) regs) GIF_REGS_ALL_AD) - (set! (-> v1-48 base) (&+ (the-as pointer a0-52) 16)) - ) - (let* ((v1-49 arg0) - (a0-54 (-> v1-49 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-54) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-54) 1) (gs-reg64 test-1)) - (set! (-> v1-49 base) (&+ a0-54 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 2))) (let ((v1-51 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-51) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -374,30 +221,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-76 arg0) - (a2-47 (the-as object (-> a1-76 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-76 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-77 arg0) - (a2-49 (the-as object (-> a1-77 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-77 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-78 arg0) - (a2-51 (-> a1-78 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-78 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 left lid)))) (a1-81 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -419,30 +243,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-89 arg0) - (a2-57 (the-as object (-> a1-89 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-89 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-90 arg0) - (a2-59 (the-as object (-> a1-90 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-90 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-91 arg0) - (a2-61 (-> a1-91 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-91 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 right lid)))) (a1-94 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 64) 16)) @@ -492,30 +295,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -529,30 +309,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-6 (* 256.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -588,30 +345,9 @@ (let ((v1-40 (ash 16 (-> s1-1 tex0 tw))) (a0-42 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-32 arg0) - (a2-17 (the-as object (-> a1-32 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-32 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-33 arg0) - (a2-19 (the-as object (-> a1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-33 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-34 arg0) - (a2-21 (-> a1-34 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-34 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-10 (* 256.0 (-> arg1 right iris-scale))) (a1-36 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -630,30 +366,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-44 arg0) - (a0-44 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-44 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-45 arg0) - (a0-46 (the-as object (-> v1-45 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-45 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((v1-46 arg0) - (a0-48 (-> v1-46 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-48) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-48) 1) (gs-reg64 test-1)) - (set! (-> v1-46 base) (&+ a0-48 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 1))) (let ((v1-48 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-48) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -671,30 +386,7 @@ (let ((v1-55 (ash 16 (-> s1-2 tex0 tw))) (a0-60 (ash 16 (-> s1-2 tex0 th))) ) - (let* ((a1-49 arg0) - (a2-27 (the-as object (-> a1-49 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-49 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-50 arg0) - (a2-29 (the-as object (-> a1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-50 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-51 arg0) - (a2-31 (-> a1-51 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-51 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-14 (* 256.0 (-> arg1 left pupil-scale))) (a1-53 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -730,30 +422,9 @@ (let ((v1-67 (ash 16 (-> s1-3 tex0 tw))) (a0-72 (ash 16 (-> s1-3 tex0 th))) ) - (let* ((a1-59 arg0) - (a2-37 (the-as object (-> a1-59 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-59 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-60 arg0) - (a2-39 (the-as object (-> a1-60 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-60 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-61 arg0) - (a2-41 (-> a1-61 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-61 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-18 (* 256.0 (-> arg1 right pupil-scale))) (a1-63 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -773,30 +444,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-71 arg0) - (a0-74 (the-as object (-> v1-71 base))) - ) - (set! (-> (the-as dma-packet a0-74) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-74) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-74) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-71 base) (&+ (the-as pointer a0-74) 16)) - ) - (let* ((v1-72 arg0) - (a0-76 (the-as object (-> v1-72 base))) - ) - (set! (-> (the-as gs-gif-tag a0-76) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-76) regs) GIF_REGS_ALL_AD) - (set! (-> v1-72 base) (&+ (the-as pointer a0-76) 16)) - ) - (let* ((v1-73 arg0) - (a0-78 (-> v1-73 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-78) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-78) 1) (gs-reg64 test-1)) - (set! (-> v1-73 base) (&+ a0-78 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-4 (-> arg1 shaders 2))) (let ((v1-75 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-75) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -819,30 +469,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-80 arg0) - (a2-47 (the-as object (-> a1-80 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-80 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-81 arg0) - (a2-49 (the-as object (-> a1-81 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-81 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-82 arg0) - (a2-51 (-> a1-82 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-82 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 left lid)))) (a1-85 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -883,30 +510,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-95 arg0) - (a2-57 (the-as object (-> a1-95 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-95 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-96 arg0) - (a2-59 (the-as object (-> a1-96 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-96 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-97 arg0) - (a2-61 (-> a1-97 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-97 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 right lid)))) (a1-100 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 64) 16)) @@ -956,30 +562,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -993,30 +576,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-6 (* 512.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -1033,30 +593,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-26) 6) a3-9 t1-0 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-30 arg0) - (a2-17 (the-as object (-> a1-30 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-30 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-31 arg0) - (a2-19 (the-as object (-> a1-31 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-31 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-32 arg0) - (a2-21 (-> a1-32 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-32 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-10 (* 512.0 (-> arg1 right iris-scale))) (a1-34 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -1075,30 +614,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-32 arg0) - (a0-32 (the-as object (-> v1-32 base))) - ) - (set! (-> (the-as dma-packet a0-32) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-32) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-32) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-32 base) (&+ (the-as pointer a0-32) 16)) - ) - (let* ((v1-33 arg0) - (a0-34 (the-as object (-> v1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a0-34) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-34) regs) GIF_REGS_ALL_AD) - (set! (-> v1-33 base) (&+ (the-as pointer a0-34) 16)) - ) - (let* ((v1-34 arg0) - (a0-36 (-> v1-34 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-36) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 test-1)) - (set! (-> v1-34 base) (&+ a0-36 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-1 (-> arg1 shaders 1))) (let ((v1-36 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-36) 0 quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1116,30 +634,7 @@ (let ((v1-43 (ash 16 (-> s1-1 tex0 tw))) (a0-48 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-47 arg0) - (a2-27 (the-as object (-> a1-47 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-47 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-48 arg0) - (a2-29 (the-as object (-> a1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-48 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-49 arg0) - (a2-31 (-> a1-49 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-49 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-14 (* 512.0 (-> arg1 left pupil-scale))) (a1-51 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -1156,30 +651,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-51) 6) a3-30 t1-3 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-55 arg0) - (a2-37 (the-as object (-> a1-55 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-55 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-56 arg0) - (a2-39 (the-as object (-> a1-56 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-56 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-57 arg0) - (a2-41 (-> a1-57 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-57 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-18 (* 512.0 (-> arg1 right pupil-scale))) (a1-59 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -1199,30 +673,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-47 arg0) - (a0-50 (the-as object (-> v1-47 base))) - ) - (set! (-> (the-as dma-packet a0-50) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-50) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-50) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-47 base) (&+ (the-as pointer a0-50) 16)) - ) - (let* ((v1-48 arg0) - (a0-52 (the-as object (-> v1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a0-52) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-52) regs) GIF_REGS_ALL_AD) - (set! (-> v1-48 base) (&+ (the-as pointer a0-52) 16)) - ) - (let* ((v1-49 arg0) - (a0-54 (-> v1-49 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-54) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-54) 1) (gs-reg64 test-1)) - (set! (-> v1-49 base) (&+ a0-54 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 2))) (let ((v1-51 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-51) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1245,30 +698,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-76 arg0) - (a2-47 (the-as object (-> a1-76 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-76 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-77 arg0) - (a2-49 (the-as object (-> a1-77 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-77 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-78 arg0) - (a2-51 (-> a1-78 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-78 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 left lid)))) (a1-81 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -1290,30 +720,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-89 arg0) - (a2-57 (the-as object (-> a1-89 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-89 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-90 arg0) - (a2-59 (the-as object (-> a1-90 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-90 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-91 arg0) - (a2-61 (-> a1-91 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-91 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 right lid)))) (a1-94 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 128) 16)) @@ -1363,30 +772,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -1400,30 +786,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-6 (* 512.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -1459,30 +822,9 @@ (let ((v1-40 (ash 16 (-> s1-1 tex0 tw))) (a0-42 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-32 arg0) - (a2-17 (the-as object (-> a1-32 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-32 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-33 arg0) - (a2-19 (the-as object (-> a1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-33 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-34 arg0) - (a2-21 (-> a1-34 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-34 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-10 (* 512.0 (-> arg1 right iris-scale))) (a1-36 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -1501,30 +843,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-44 arg0) - (a0-44 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-44 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-45 arg0) - (a0-46 (the-as object (-> v1-45 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-45 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((v1-46 arg0) - (a0-48 (-> v1-46 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-48) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-48) 1) (gs-reg64 test-1)) - (set! (-> v1-46 base) (&+ a0-48 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 1))) (let ((v1-48 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-48) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1542,30 +863,7 @@ (let ((v1-55 (ash 16 (-> s1-2 tex0 tw))) (a0-60 (ash 16 (-> s1-2 tex0 th))) ) - (let* ((a1-49 arg0) - (a2-27 (the-as object (-> a1-49 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-49 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-50 arg0) - (a2-29 (the-as object (-> a1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-50 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-51 arg0) - (a2-31 (-> a1-51 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-51 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-14 (* 512.0 (-> arg1 left pupil-scale))) (a1-53 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -1601,30 +899,9 @@ (let ((v1-67 (ash 16 (-> s1-3 tex0 tw))) (a0-72 (ash 16 (-> s1-3 tex0 th))) ) - (let* ((a1-59 arg0) - (a2-37 (the-as object (-> a1-59 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-59 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-60 arg0) - (a2-39 (the-as object (-> a1-60 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-60 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-61 arg0) - (a2-41 (-> a1-61 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-61 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-18 (* 512.0 (-> arg1 right pupil-scale))) (a1-63 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -1644,30 +921,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-71 arg0) - (a0-74 (the-as object (-> v1-71 base))) - ) - (set! (-> (the-as dma-packet a0-74) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-74) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-74) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-71 base) (&+ (the-as pointer a0-74) 16)) - ) - (let* ((v1-72 arg0) - (a0-76 (the-as object (-> v1-72 base))) - ) - (set! (-> (the-as gs-gif-tag a0-76) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-76) regs) GIF_REGS_ALL_AD) - (set! (-> v1-72 base) (&+ (the-as pointer a0-76) 16)) - ) - (let* ((v1-73 arg0) - (a0-78 (-> v1-73 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-78) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-78) 1) (gs-reg64 test-1)) - (set! (-> v1-73 base) (&+ a0-78 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-4 (-> arg1 shaders 2))) (let ((v1-75 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-75) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1690,30 +946,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-80 arg0) - (a2-47 (the-as object (-> a1-80 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-80 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-81 arg0) - (a2-49 (the-as object (-> a1-81 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-81 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-82 arg0) - (a2-51 (-> a1-82 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-82 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 left lid)))) (a1-85 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -1754,30 +987,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-95 arg0) - (a2-57 (the-as object (-> a1-95 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-95 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-96 arg0) - (a2-59 (the-as object (-> a1-96 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-96 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-97 arg0) - (a2-61 (-> a1-97 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-97 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 right lid)))) (a1-100 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 128) 16)) @@ -1872,75 +1084,19 @@ ) ) ) - (let* ((s2-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (s3-0 (-> s2-0 base)) - ) + (with-dma-buffer-add-bucket ((s2-0 (-> *display* frames (-> *display* on-screen) global-buf)) + (the-as bucket-id (-> s4-0 bucket)) + ) (set-display-gs-state-offset s2-0 (the-as int (-> *eyes-texture-base* vram-page)) 128 256 0 0 64 64) - (let* ((v1-49 s2-0) - (a0-38 (the-as object (-> v1-49 base))) - ) - (set! (-> (the-as dma-packet a0-38) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-38) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-38) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-49 base) (&+ (the-as pointer a0-38) 16)) - ) - (let* ((v1-50 s2-0) - (a0-40 (the-as object (-> v1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a0-40) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-40) regs) GIF_REGS_ALL_AD) - (set! (-> v1-50 base) (&+ (the-as pointer a0-40) 16)) - ) - (let* ((v1-51 s2-0) - (a0-42 (-> v1-51 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-42) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-42) 1) (gs-reg64 test-1)) - (set! (-> v1-51 base) (&+ a0-42 16)) - ) + (dma-buffer-add-gs-set s2-0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (if (-> s4-0 different-eyes) (render-eyes-64-different s2-0 s4-0 (/ s5-0 4)) (render-eyes-64 s2-0 s4-0 (/ s5-0 4)) ) (reset-display-gs-state *display* s2-0) - (let* ((v1-55 s2-0) - (a0-47 (the-as object (-> v1-55 base))) - ) - (set! (-> (the-as dma-packet a0-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-55 base) (&+ (the-as pointer a0-47) 16)) - ) - (let* ((v1-56 s2-0) - (a0-49 (the-as object (-> v1-56 base))) - ) - (set! (-> (the-as gs-gif-tag a0-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-49) regs) GIF_REGS_ALL_AD) - (set! (-> v1-56 base) (&+ (the-as pointer a0-49) 16)) - ) - (let* ((v1-57 s2-0) - (a0-51 (-> v1-57 base)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-51) 0) (gs-reg64 dimx)) - (set! (-> (the-as (pointer gs-reg64) a0-51) 1) (gs-reg64 alpha-1)) - (set! (-> v1-57 base) (&+ a0-51 16)) - ) - (let ((a3-1 (-> s2-0 base))) - (let ((v1-58 (the-as object (-> s2-0 base)))) - (set! (-> (the-as dma-packet v1-58) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-58) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-58) vif1) (new 'static 'vif-tag)) - (set! (-> s2-0 base) (&+ (the-as pointer v1-58) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (the-as bucket-id (-> s4-0 bucket)) - s3-0 - (the-as (pointer dma-tag) a3-1) - ) - ) + (dma-buffer-add-gs-set s2-0 (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) ) ) ((and (< gp-0 3) @@ -1955,75 +1111,19 @@ ) ) ) - (let* ((s2-1 (-> *display* frames (-> *display* on-screen) global-buf)) - (s3-1 (-> s2-1 base)) - ) + (with-dma-buffer-add-bucket ((s2-1 (-> *display* frames (-> *display* on-screen) global-buf)) + (the-as bucket-id (-> s4-0 bucket)) + ) (set-display-gs-state-offset s2-1 (the-as int (-> *eyes-texture-base* vram-page)) 64 512 0 0 32 32) - (let* ((v1-78 s2-1) - (a0-63 (the-as object (-> v1-78 base))) - ) - (set! (-> (the-as dma-packet a0-63) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-63) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-63) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-78 base) (&+ (the-as pointer a0-63) 16)) - ) - (let* ((v1-79 s2-1) - (a0-65 (the-as object (-> v1-79 base))) - ) - (set! (-> (the-as gs-gif-tag a0-65) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-65) regs) GIF_REGS_ALL_AD) - (set! (-> v1-79 base) (&+ (the-as pointer a0-65) 16)) - ) - (let* ((v1-80 s2-1) - (a0-67 (-> v1-80 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-67) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-67) 1) (gs-reg64 test-1)) - (set! (-> v1-80 base) (&+ a0-67 16)) - ) + (dma-buffer-add-gs-set s2-1 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (if (-> s4-0 different-eyes) (render-eyes-32-different s2-1 s4-0 s5-0) (render-eyes-32 s2-1 s4-0 s5-0) ) (reset-display-gs-state *display* s2-1) - (let* ((v1-84 s2-1) - (a0-72 (the-as object (-> v1-84 base))) - ) - (set! (-> (the-as dma-packet a0-72) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-72) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-72) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-84 base) (&+ (the-as pointer a0-72) 16)) - ) - (let* ((v1-85 s2-1) - (a0-74 (the-as object (-> v1-85 base))) - ) - (set! (-> (the-as gs-gif-tag a0-74) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-74) regs) GIF_REGS_ALL_AD) - (set! (-> v1-85 base) (&+ (the-as pointer a0-74) 16)) - ) - (let* ((v1-86 s2-1) - (a0-76 (-> v1-86 base)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-76) 0) (gs-reg64 dimx)) - (set! (-> (the-as (pointer gs-reg64) a0-76) 1) (gs-reg64 alpha-1)) - (set! (-> v1-86 base) (&+ a0-76 16)) - ) - (let ((a3-3 (-> s2-1 base))) - (let ((v1-87 (the-as object (-> s2-1 base)))) - (set! (-> (the-as dma-packet v1-87) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-87) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-87) vif1) (new 'static 'vif-tag)) - (set! (-> s2-1 base) (&+ (the-as pointer v1-87) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (the-as bucket-id (-> s4-0 bucket)) - s3-1 - (the-as (pointer dma-tag) a3-3) - ) - ) + (dma-buffer-add-gs-set s2-1 (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) ) ) ) diff --git a/goal_src/jak2/engine/gfx/foreground/foreground.gc b/goal_src/jak2/engine/gfx/foreground/foreground.gc index 903d66213f..8b1732bb71 100644 --- a/goal_src/jak2/engine/gfx/foreground/foreground.gc +++ b/goal_src/jak2/engine/gfx/foreground/foreground.gc @@ -18,7 +18,7 @@ ;; DECOMP BEGINS -(define foreground-vu0-block (new 'static 'vu-function :length 9 :qlength 5)) +(define foreground-vu0-block (new 'static 'vu-function)) (define *bucket-map* (new 'static 'array bucket-id-16 200 (bucket-id-16 merc-l0-tfrag) diff --git a/goal_src/jak2/engine/gfx/generic/generic-merc.gc b/goal_src/jak2/engine/gfx/generic/generic-merc.gc index 9eaaf8ca4a..f1eae8ee10 100644 --- a/goal_src/jak2/engine/gfx/generic/generic-merc.gc +++ b/goal_src/jak2/engine/gfx/generic/generic-merc.gc @@ -7,7 +7,7 @@ ;; DECOMP BEGINS -(define mercneric-vu0-block (new 'static 'vu-function #|:length #xbe :origin #x118 :qlength 95|#)) +(define mercneric-vu0-block (new 'static 'vu-function)) (deftype invinitdata (structure) ((count uint8 :offset-assert 0) diff --git a/goal_src/jak2/engine/gfx/generic/generic-vu1.gc b/goal_src/jak2/engine/gfx/generic/generic-vu1.gc index cd955d88cf..1ab3d15136 100644 --- a/goal_src/jak2/engine/gfx/generic/generic-vu1.gc +++ b/goal_src/jak2/engine/gfx/generic/generic-vu1.gc @@ -7,7 +7,7 @@ ;; DECOMP BEGINS -(define generic-vu1-block (new 'static 'vu-function #|:length #x6de :qlength #x36f|#)) +(define generic-vu1-block (new 'static 'vu-function)) (defun generic-setup-constants ((arg0 generic-constants)) (let ((v1-0 *math-camera*)) diff --git a/goal_src/jak2/engine/gfx/hw/display.gc b/goal_src/jak2/engine/gfx/hw/display.gc index 19cd011dd6..7f336a83a8 100644 --- a/goal_src/jak2/engine/gfx/hw/display.gc +++ b/goal_src/jak2/engine/gfx/hw/display.gc @@ -508,7 +508,7 @@ ; lw v1, *display*(s7) ; sd v0, 108(v1) - (set! (-> *display* vblank-start-time 1) (the-as time-frame (timer-count TIMER1_BANK))) ;; not really a time-frame. + (set! (-> *display* vblank-start-time 1) (the-as int (timer-count TIMER1_BANK))) ;; not really a time-frame. ; addiu v0, r0, 0 0 ; ld ra, 0(sp) @@ -524,129 +524,44 @@ (defun set-display-gs-state ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int)) (let ((t2-0 (/ (+ arg2 63) 64))) - (let* ((v1-1 arg0) - (t3-0 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet t3-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t3-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet t3-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer t3-0) 16)) - ) - (let* ((v1-2 arg0) - (t3-2 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag t3-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> (the-as gs-gif-tag t3-2) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer t3-2) 16)) - ) - (let* ((v1-3 arg0) - (t3-4 (-> v1-3 base)) - ) - (set! (-> (the-as (pointer gs-scissor) t3-4) 0) - (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)) - ) - (set! (-> (the-as (pointer gs-reg64) t3-4) 1) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-xy-offset) t3-4) 2) (new 'static 'gs-xy-offset)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 3) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) t3-4) 4) - (new 'static 'gs-frame :fbp arg1 :fbw t2-0 :psm arg5 :fbmsk arg4) - ) - (set! (-> (the-as (pointer gs-reg64) t3-4) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-test) t3-4) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - (set! (-> (the-as (pointer gs-reg64) t3-4) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) t3-4) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-zbuf) t3-4) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 11) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer uint64) t3-4) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 13) (gs-reg64 texflush)) - (set! (-> v1-3 base) (&+ t3-4 112)) - ) + (dma-buffer-add-gs-set-flusha arg0 + (scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1))) + (xyoffset-1 (new 'static 'gs-xy-offset)) + (frame-1 (new 'static 'gs-frame :fbp arg1 :fbw t2-0 :psm arg5 :fbmsk arg4)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (texflush 0) + ) ) arg0 ) (defun set-display-gs-state-offset ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int)) (let ((t4-0 (/ (+ arg2 63) 64))) - (let* ((v1-1 arg0) - (t5-0 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet t5-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t5-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet t5-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer t5-0) 16)) - ) - (let* ((v1-2 arg0) - (t5-2 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag t5-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> (the-as gs-gif-tag t5-2) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer t5-2) 16)) - ) - (let* ((v1-3 arg0) - (t5-4 (-> v1-3 base)) - ) - (set! (-> (the-as (pointer gs-scissor) t5-4) 0) - (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)) - ) - (set! (-> (the-as (pointer gs-reg64) t5-4) 1) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-xy-offset) t5-4) 2) - (new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16)) - ) - (set! (-> (the-as (pointer gs-reg64) t5-4) 3) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) t5-4) 4) - (new 'static 'gs-frame :fbp arg1 :fbw t4-0 :psm arg5 :fbmsk arg4) - ) - (set! (-> (the-as (pointer gs-reg64) t5-4) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-test) t5-4) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - (set! (-> (the-as (pointer gs-reg64) t5-4) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) t5-4) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t5-4) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-zbuf) t5-4) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) t5-4) 11) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer uint64) t5-4) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t5-4) 13) (gs-reg64 texflush)) - (set! (-> v1-3 base) (&+ t5-4 112)) - ) + (dma-buffer-add-gs-set-flusha arg0 + (scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1))) + (xyoffset-1 (new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16))) + (frame-1 (new 'static 'gs-frame :fbp arg1 :fbw t4-0 :psm arg5 :fbmsk arg4)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (texflush 0) + ) ) arg0 ) (defun reset-display-gs-state ((arg0 display) (arg1 dma-buffer)) - (let* ((v1-0 arg1) - (a2-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a2-1) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-1) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet a2-1) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a2-1) 16)) - ) - (let* ((v1-1 arg1) - (a2-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a2-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> (the-as gs-gif-tag a2-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a2-3) 16)) - ) - (let* ((v1-2 arg1) - (a1-1 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a1-1) 0) (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 1) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-xy-offset) a1-1) 2) (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 3) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) a1-1) 4) (new 'static 'gs-frame :fbp #x198 :fbw #x8)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-test) a1-1) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) - (set! (-> (the-as (pointer gs-reg64) a1-1) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) a1-1) 8) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-zbuf) a1-1) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a1-1) 11) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer uint64) a1-1) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 13) (gs-reg64 texflush)) - (set! (-> v1-2 base) (&+ a1-1 112)) - ) + (dma-buffer-add-gs-set-flusha arg1 + (scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f)) + (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300)) + (frame-1 (new 'static 'gs-frame :fbp #x198 :fbw #x8)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) + (texa (new 'static 'gs-texa :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (texflush 0) + ) arg0 ) diff --git a/goal_src/jak2/engine/gfx/hw/gs.gc b/goal_src/jak2/engine/gfx/hw/gs.gc index fb855dd221..a6f6feec7d 100644 --- a/goal_src/jak2/engine/gfx/hw/gs.gc +++ b/goal_src/jak2/engine/gfx/hw/gs.gc @@ -491,8 +491,8 @@ ;; the GS's UV register specifies the texel coordinate (UV) values of the vertex. (deftype gs-uv (uint64) - ((u uint16 :offset 0 :size 14) - (v uint16 :offset 16 :size 14) + ((u uint16 :offset 0 :size 16) + (v uint16 :offset 16 :size 16) ) :method-count-assert 9 :size-assert #x8 @@ -586,7 +586,7 @@ (spsm uint8 :offset 24 :size 6) (dbp uint16 :offset 32 :size 14) (dbw uint8 :offset 48 :size 6) - (dpsm uint8 :offset 56 :size 6) + (dpsm gs-psm :offset 56 :size 6) ) :method-count-assert 9 :size-assert #x8 diff --git a/goal_src/jak2/engine/gfx/merc/emerc-vu1.gc b/goal_src/jak2/engine/gfx/merc/emerc-vu1.gc index c13b70b0a7..01d7f59b89 100644 --- a/goal_src/jak2/engine/gfx/merc/emerc-vu1.gc +++ b/goal_src/jak2/engine/gfx/merc/emerc-vu1.gc @@ -7,4 +7,4 @@ ;; DECOMP BEGINS -(define emerc-vu1-block (new 'static 'vu-function :length #x56b :qlength #x2b6)) \ No newline at end of file +(define emerc-vu1-block (new 'static 'vu-function)) \ No newline at end of file diff --git a/goal_src/jak2/engine/gfx/merc/emerc.gc b/goal_src/jak2/engine/gfx/merc/emerc.gc index 84c875c163..32c07879b5 100644 --- a/goal_src/jak2/engine/gfx/merc/emerc.gc +++ b/goal_src/jak2/engine/gfx/merc/emerc.gc @@ -61,28 +61,7 @@ (set! (-> dma-buf base) (the-as pointer (emerc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base)))) ) - (let* ((v1-12 dma-buf) - (a0-4 (the-as object (-> v1-12 base))) - ) - (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-12 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((v1-13 dma-buf) - (a0-6 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD) - (set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-14 dma-buf) - (a0-8 (-> v1-14 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-8) 0) test) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> v1-14 base) (&+ a0-8 16)) - ) + (dma-buffer-add-gs-set dma-buf (test-1 test)) (let ((v1-15 (the-as dma-packet (-> dma-buf base)))) (set! (-> v1-15 dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next))) (set! (-> v1-15 vif0) (new 'static 'vif-tag)) diff --git a/goal_src/jak2/engine/gfx/merc/merc-vu1.gc b/goal_src/jak2/engine/gfx/merc/merc-vu1.gc index 1c0d6b02aa..5eaa816c07 100644 --- a/goal_src/jak2/engine/gfx/merc/merc-vu1.gc +++ b/goal_src/jak2/engine/gfx/merc/merc-vu1.gc @@ -7,4 +7,4 @@ ;; DECOMP BEGINS -(define merc-vu1-block (new 'static 'vu-function :length 0 :qlength 0)) \ No newline at end of file +(define merc-vu1-block (new 'static 'vu-function)) \ No newline at end of file diff --git a/goal_src/jak2/engine/gfx/merc/merc.gc b/goal_src/jak2/engine/gfx/merc/merc.gc index 6bcd1ba789..5268832279 100644 --- a/goal_src/jak2/engine/gfx/merc/merc.gc +++ b/goal_src/jak2/engine/gfx/merc/merc.gc @@ -21,6 +21,7 @@ :flag-assert #x900000014 ) + (define *texture-login-data* (new 'global 'texture-login-data)) (defmethod login art-joint-geo ((obj art-joint-geo)) @@ -232,7 +233,7 @@ (none) ) -;; definition for method 8 of type merc-ctrl + (defmethod mem-usage merc-ctrl ((obj merc-ctrl) (arg0 memory-usage-block) (arg1 int)) (if (-> obj extra) (mem-usage (-> obj extra) arg0 arg1) @@ -300,7 +301,6 @@ obj ) -;; definition for method 9 of type merc-ctrl (defmethod login merc-ctrl ((obj merc-ctrl)) (set! (-> *kernel-context* login-object) obj) (texture-usage-init obj) @@ -533,47 +533,23 @@ (s3-1 (-> dma-buf base)) ) (set! (-> dma-buf base) - (the-as - pointer - (merc-vu1-initialize-chain (the-as dma-gif-packet (the-as dma-packet (-> dma-buf base))) arg1) - ) + (the-as pointer (merc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base)) arg1)) ) - (let* ((v1-12 dma-buf) - (a0-4 (the-as dma-packet (-> v1-12 base))) - ) - (set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> a0-4 vif0) (new 'static 'vif-tag)) - (set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-12 base) (the-as pointer (the-as dma-packet (&+ a0-4 16)))) - ) - (let* ((v1-13 dma-buf) - (a0-6 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD) - (set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-14 dma-buf) - (a0-8 (-> v1-14 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-8) 0) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-zbuf) a0-8) 2) - (if arg2 - (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)) - (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 zbuf-1)) - (set! (-> v1-14 base) (&+ a0-8 32)) - ) + (dma-buffer-add-gs-set dma-buf + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (zbuf-1 (if arg2 + #x1000130 + (the-as int (the-as uint #x101000130)) + ) + ) + ) (let ((v1-15 (the-as object (-> dma-buf base)))) (set! (-> (the-as dma-packet v1-15) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next))) (set! (-> (the-as dma-packet v1-15) vif0) (new 'static 'vif-tag)) diff --git a/goal_src/jak2/engine/gfx/ocean/ocean-h.gc b/goal_src/jak2/engine/gfx/ocean/ocean-h.gc index 6aea0d6d2a..5f23805a41 100644 --- a/goal_src/jak2/engine/gfx/ocean/ocean-h.gc +++ b/goal_src/jak2/engine/gfx/ocean/ocean-h.gc @@ -520,7 +520,7 @@ (generate-verts (_type_ ocean-vert-array ocean-height-array) none 16) (add-colors! (_type_ vector ocean-vertex) none 17) (ocean-method-18 (_type_ (pointer ocean-colors) (pointer ocean-colors)) none 18) - (init-buffer! (_type_ dma-buffer) pointer 19) + (init-buffer! (_type_ dma-buffer) none 19) (end-buffer! (_type_ dma-buffer) none 20) (set-corners! (_type_ float float) float 21) (ocean-near-add-call (_type_ dma-buffer int) none 22) @@ -582,7 +582,7 @@ (draw-ocean-texture (_type_ dma-buffer int) none 78) (ocean-method-79 (_type_ dma-buffer) none 79) (ocean-method-80 (_type_ (pointer rgba)) none 80) - (ocean-method-81 (_type_ dma-buffer) none 81) + (ocean-method-81 (_type_ dma-buffer) int 81) (draw-envmap-debug (_type_ dma-buffer) none 82) (ocean-method-83 (_type_ dma-buffer float) none 83) (ocean-method-84 (_type_ dma-buffer sky-upload-data vector4w float) none 84) diff --git a/goal_src/jak2/engine/gfx/ocean/ocean-mid.gc b/goal_src/jak2/engine/gfx/ocean/ocean-mid.gc index 8ad64c8022..47de9942a9 100644 --- a/goal_src/jak2/engine/gfx/ocean/ocean-mid.gc +++ b/goal_src/jak2/engine/gfx/ocean/ocean-mid.gc @@ -7,7 +7,7 @@ ;; DECOMP BEGINS -(define ocean-mid-block (new 'static 'vu-function #|:length #x490 :qlength #x248|#)) +(define ocean-mid-block (new 'static 'vu-function)) (defmethod ocean-mid-setup-constants ocean ((obj ocean) (arg0 ocean-mid-constants)) (let ((v1-0 *math-camera*)) diff --git a/goal_src/jak2/engine/gfx/ocean/ocean-near.gc b/goal_src/jak2/engine/gfx/ocean/ocean-near.gc index 01c1e9aaeb..01f072b0e9 100644 --- a/goal_src/jak2/engine/gfx/ocean/ocean-near.gc +++ b/goal_src/jak2/engine/gfx/ocean/ocean-near.gc @@ -7,7 +7,7 @@ ;; DECOMP BEGINS -(define ocean-near-block (new 'static 'vu-function #|:length #x3dd :qlength #x1ef|#)) +(define ocean-near-block (new 'static 'vu-function)) (defmethod ocean-near-add-call ocean ((obj ocean) (arg0 dma-buffer) (arg1 int)) (let* ((v1-0 arg0) @@ -656,30 +656,9 @@ (defmethod draw-ocean-near ocean ((obj ocean) (arg0 dma-buffer)) (local-vars (sv-16 uint)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-5) 0) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal))) + ) (dma-buffer-add-vu-function arg0 ocean-near-block 1) (let* ((v1-3 arg0) (a0-8 (the-as object (-> v1-3 base))) diff --git a/goal_src/jak2/engine/gfx/ocean/ocean-texture.gc b/goal_src/jak2/engine/gfx/ocean/ocean-texture.gc index ec2f84d611..88c0cac5f2 100644 --- a/goal_src/jak2/engine/gfx/ocean/ocean-texture.gc +++ b/goal_src/jak2/engine/gfx/ocean/ocean-texture.gc @@ -7,7 +7,7 @@ ;; DECOMP BEGINS -(define ocean-texture-vu1-block (new 'static 'vu-function #|:length #x7c :qlength 62|#)) +(define ocean-texture-vu1-block (new 'static 'vu-function)) (defmethod ocean-texture-setup-constants ocean ((obj ocean) (arg0 ocean-texture-constants)) (set! (-> arg0 giftag tag) @@ -151,34 +151,11 @@ (defmethod draw-ocean-texture ocean ((obj ocean) (arg0 dma-buffer) (arg1 int)) (set-display-gs-state arg0 21 128 128 0 0) (ocean-texture-add-envmap obj arg0) - (let* ((v1-2 arg0) - (a0-3 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as dma-packet a0-3) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-3) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-3) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-2 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-3 arg0) - (a0-5 (the-as object (-> v1-3 base))) - ) - (set! (-> (the-as gs-gif-tag a0-5) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-5) regs) GIF_REGS_ALL_AD) - (set! (-> v1-3 base) (&+ (the-as pointer a0-5) 16)) - ) - (let* ((v1-4 arg0) - (a0-7 (-> v1-4 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-7) 0) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-7) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-7) 2) (new 'static 'gs-alpha :b #x2 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-7) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex1) a0-7) 4) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-7) 5) (gs-reg64 tex1-1)) - (set! (-> v1-4 base) (&+ a0-7 48)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1)) + (tex1-1 (new 'static 'gs-tex1)) + ) (dma-buffer-add-vu-function arg0 ocean-texture-vu1-block 1) (let* ((v1-5 arg0) (a0-10 (the-as object (-> v1-5 base))) @@ -211,42 +188,14 @@ (defmethod ocean-method-79 ocean ((obj ocean) (arg0 dma-buffer)) (set-display-gs-state arg0 53 64 64 0 0) - (let* ((v1-0 arg0) - (a0-2 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16)) - ) - (let* ((v1-1 arg0) - (a0-4 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 4) - (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 8) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (texflush 0) + ) (let ((v1-17 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-17 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-17 1 quad) (-> obj sprite-tmpl quad 1)) @@ -258,32 +207,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 61 32 32 0 0) - (let* ((v1-20 arg0) - (a0-16 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-16) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-16) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-16) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-16) 16)) - ) - (let* ((v1-21 arg0) - (a0-18 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-18) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-18) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-18) 16)) - ) - (let* ((s4-1 arg0) - (s3-1 (-> s4-1 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-1) 0) - (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x1 :tcc #x1 :th (log2 64) :tw (log2 64)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-1) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 3) (gs-reg64 texflush)) - (set! (-> s4-1 base) (&+ s3-1 32)) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x1 :tcc #x1 :th (log2 64) :tw (log2 64))) + (texflush 0) + ) (let ((v1-30 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-30 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-30 1 quad) (-> obj sprite-tmpl quad 1)) @@ -295,32 +222,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 63 16 16 0 0) - (let* ((v1-33 arg0) - (a0-30 (the-as object (-> v1-33 base))) - ) - (set! (-> (the-as dma-packet a0-30) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-30) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-30) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-33 base) (&+ (the-as pointer a0-30) 16)) - ) - (let* ((v1-34 arg0) - (a0-32 (the-as object (-> v1-34 base))) - ) - (set! (-> (the-as gs-gif-tag a0-32) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-32) regs) GIF_REGS_ALL_AD) - (set! (-> v1-34 base) (&+ (the-as pointer a0-32) 16)) - ) - (let* ((s4-2 arg0) - (s3-2 (-> s4-2 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-2) 0) - (new 'static 'gs-tex0 :tbp0 #x7a0 :tcc #x1 :th (log2 32) :tw (log2 32)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-2) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 3) (gs-reg64 texflush)) - (set! (-> s4-2 base) (&+ s3-2 32)) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x7a0 :tcc #x1 :th (log2 32) :tw (log2 32))) + (texflush 0) + ) (let ((v1-43 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-43 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-43 1 quad) (-> obj sprite-tmpl quad 1)) @@ -332,32 +237,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 64 8 8 0 0) - (let* ((v1-46 arg0) - (a0-44 (the-as object (-> v1-46 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-46 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-47 arg0) - (a0-46 (the-as object (-> v1-47 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-47 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((s4-3 arg0) - (s3-3 (-> s4-3 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-3) 0) - (new 'static 'gs-tex0 :tbp0 #x7e0 :tcc #x1 :th (log2 16) :tw (log2 16)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-3) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-3) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-3) 3) (gs-reg64 texflush)) - (set! (-> s4-3 base) (&+ s3-3 32)) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x7e0 :tcc #x1 :th (log2 16) :tw (log2 16))) + (texflush 0) + ) (let ((v1-56 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-56 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-56 1 quad) (-> obj sprite-tmpl quad 1)) @@ -369,32 +252,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 65 8 8 0 0) - (let* ((v1-59 arg0) - (a0-58 (the-as object (-> v1-59 base))) - ) - (set! (-> (the-as dma-packet a0-58) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-58) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-58) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-59 base) (&+ (the-as pointer a0-58) 16)) - ) - (let* ((v1-60 arg0) - (a0-60 (the-as object (-> v1-60 base))) - ) - (set! (-> (the-as gs-gif-tag a0-60) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-60) regs) GIF_REGS_ALL_AD) - (set! (-> v1-60 base) (&+ (the-as pointer a0-60) 16)) - ) - (let* ((s4-4 arg0) - (s3-4 (-> s4-4 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-4) 0) - (new 'static 'gs-tex0 :tbp0 #x800 :tcc #x1 :th (log2 8) :tw (log2 8)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-4) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-4) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-4) 3) (gs-reg64 texflush)) - (set! (-> s4-4 base) (the-as pointer (the-as (inline-array vector4w) (&+ s3-4 32)))) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x800 :tcc #x1 :th (log2 8) :tw (log2 8))) + (texflush 0) + ) (let ((v1-69 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-69 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-69 1 quad) (-> obj sprite-tmpl quad 1)) @@ -455,42 +316,14 @@ (defmethod ocean-method-81 ocean ((obj ocean) (arg0 dma-buffer)) (set-display-gs-state arg0 53 128 128 0 0) - (let* ((v1-0 arg0) - (a0-2 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16)) - ) - (let* ((v1-1 arg0) - (a0-4 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 4) - (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 8) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (texflush 0) + ) (let ((v1-17 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-17 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-17 1 quad) (-> obj sprite-tmpl quad 1)) @@ -501,34 +334,12 @@ (set! (-> v1-17 6 quad) (-> obj xy8080 quad)) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-15 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-15) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-15) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-15) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-15) 16)) - ) - (let* ((v1-21 arg0) - (a0-17 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-17) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-17) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-17) 16)) - ) - (let* ((v1-22 arg0) - (a0-19 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-19) 0) (new 'static 'gs-bitbltbuf :dbp #x860)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-19) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-19) 4) (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-19) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 7) (gs-reg64 trxdir)) - (set! (-> v1-22 base) (&+ a0-19 64)) - ) + (dma-buffer-add-gs-set arg0 + (bitbltbuf (new 'static 'gs-bitbltbuf :dbp #x860)) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) + (trxdir (new 'static 'gs-trxdir)) + ) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> obj clut-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> obj clut-tmpl quad 1)) @@ -536,46 +347,24 @@ ) (&+! (-> arg0 base) 1056) (set-display-gs-state arg0 85 128 128 0 0) - (let* ((v1-27 arg0) - (a0-25 (the-as object (-> v1-27 base))) - ) - (set! (-> (the-as dma-packet a0-25) dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-25) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-25) vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-27 base) (&+ (the-as pointer a0-25) 16)) - ) - (let* ((v1-28 arg0) - (a0-27 (the-as object (-> v1-28 base))) - ) - (set! (-> (the-as gs-gif-tag a0-27) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5)) - (set! (-> (the-as gs-gif-tag a0-27) regs) GIF_REGS_ALL_AD) - (set! (-> v1-28 base) (&+ (the-as pointer a0-27) 16)) - ) - (let* ((s4-1 arg0) - (s3-1 (-> s4-1 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s3-1) 0) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-1) 2) (new 'static 'gs-tex0 - :tbp0 #x2a0 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x860 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-1) 4) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-1) 6) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-1) 8) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 9) (gs-reg64 texflush)) - (set! (-> s4-1 base) (&+ s3-1 80)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha)) + (tex0-1 + (new 'static 'gs-tex0 + :tbp0 #x2a0 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x860 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1)) + (clamp-1 (new 'static 'gs-clamp)) + (texflush 0) + ) (let ((v1-40 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-40 0 quad) (-> obj sprite-tmpl3 dma-vif quad)) (set! (-> v1-40 1 quad) (-> obj sprite-tmpl3 quad 1)) @@ -586,32 +375,11 @@ (set! (-> v1-40 6 quad) (-> obj xy8080 quad)) ) (&+! (-> arg0 base) 112) - (let* ((v1-43 arg0) - (a0-38 (the-as object (-> v1-43 base))) - ) - (set! (-> (the-as dma-packet a0-38) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-38) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-38) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-43 base) (&+ (the-as pointer a0-38) 16)) - ) - (let* ((v1-44 arg0) - (a0-40 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as gs-gif-tag a0-40) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-40) regs) GIF_REGS_ALL_AD) - (set! (-> v1-44 base) (&+ (the-as pointer a0-40) 16)) - ) - (let* ((v1-45 arg0) - (a0-42 (-> v1-45 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-42) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-42) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex1) a0-42) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-42) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) a0-42) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-42) 5) (gs-reg64 texflush)) - (set! (-> v1-45 base) (&+ a0-42 48)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texflush 0) + ) (let ((v1-46 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-46 0 quad) (-> obj sprite-tmpl3 dma-vif quad)) (set! (-> v1-46 1 quad) (-> obj sprite-tmpl3 quad 1)) @@ -623,36 +391,12 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 21 128 128 0 0) - (let* ((v1-49 arg0) - (a0-52 (the-as object (-> v1-49 base))) - ) - (set! (-> (the-as dma-packet a0-52) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-52) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-52) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-49 base) (&+ (the-as pointer a0-52) 16)) - ) - (let* ((v1-50 arg0) - (a0-54 (the-as object (-> v1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a0-54) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-54) regs) GIF_REGS_ALL_AD) - (set! (-> v1-50 base) (&+ (the-as pointer a0-54) 16)) - ) - (let* ((s4-2 arg0) - (s3-2 (-> s4-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s3-2) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-2) 2) - (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x2 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-2) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) s3-2) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 7) (gs-reg64 texflush)) - (set! (-> s4-2 base) (&+ s3-2 64)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x2 :th (log2 128) :tw (log2 128))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texflush 0) + ) (let ((v1-63 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-63 0 quad) (-> obj sprite-tmpl3 dma-vif quad)) (set! (-> v1-63 1 quad) (-> obj sprite-tmpl3 quad 1)) @@ -673,211 +417,69 @@ (a0-69 (/ (+ (* s5-1 2) 63) 64)) (a1-55 #x3fff) ) - (let* ((a2-3 arg0) - (a3-3 (the-as object (-> a2-3 base))) - ) - (set! (-> (the-as dma-packet a3-3) dma) (new 'static 'dma-tag :qwc #xc :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a3-3) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet a3-3) vif1) (new 'static 'vif-tag :imm #xc :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a2-3 base) (&+ (the-as pointer a3-3) 16)) - ) - (let* ((a2-4 arg0) - (a3-5 (the-as object (-> a2-4 base))) - ) - (set! (-> (the-as gs-gif-tag a3-5) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #xb)) - (set! (-> (the-as gs-gif-tag a3-5) regs) GIF_REGS_ALL_AD) - (set! (-> a2-4 base) (&+ (the-as pointer a3-5) 16)) - ) - (let* ((a2-5 arg0) - (a3-7 (-> a2-5 base)) - ) - (set! (-> (the-as (pointer gs-xy-offset) a3-7) 0) (new 'static 'gs-xy-offset)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 1) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) a3-7) 2) - (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp s1-0) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 3) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-scissor) a3-7) 4) - (new 'static 'gs-scissor :scax1 (+ s5-1 -1) :scay1 (+ s4-3 -1)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 5) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-test) a3-7) 6) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a3-7) 8) (new 'static 'gs-alpha :a #x2 :b #x2 :c #x2 :fix #x80)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 9) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a3-7) 10) - (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 s2-5) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 11) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) a3-7) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 13) (gs-reg64 fba-1)) - (set! (-> (the-as (pointer gs-texa) a3-7) 14) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 15) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-tex1) a3-7) 16) (new 'static 'gs-tex1 :lcm #x1)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 17) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) a3-7) 18) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 19) (gs-reg64 texflush)) - (set! (-> (the-as (pointer gs-prim) a3-7) 20) - (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 21) (gs-reg64 prim)) - (set! (-> a2-5 base) (&+ a3-7 176)) - ) + (dma-buffer-add-gs-set-flusha arg0 + (xyoffset-1 (new 'static 'gs-xy-offset)) + (frame-1 (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp s1-0)) + (scissor-1 (new 'static 'gs-scissor :scax1 (+ s5-1 -1) :scay1 (+ s4-3 -1))) + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :a #x2 :b #x2 :c #x2 :fix #x80)) + (tex0-1 (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 s2-5)) + (fba-1 0) + (texa (new 'static 'gs-texa :ta1 #x80)) + (tex1-1 (new 'static 'gs-tex1 :lcm #x1)) + (texflush 0) + (prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1)) + ) (let ((a2-6 s4-3)) (dotimes (a3-9 (/ s5-1 16)) - (let* ((t0-38 arg0) - (t1-19 (the-as object (-> t0-38 base))) - ) - (set! (-> (the-as dma-packet t1-19) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t1-19) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet t1-19) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-38 base) (&+ (the-as pointer t1-19) 16)) - ) - (let* ((t0-39 arg0) - (t1-21 (the-as object (-> t0-39 base))) - ) - (set! (-> (the-as gs-gif-tag t1-21) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag t1-21) regs) GIF_REGS_ALL_AD) - (set! (-> t0-39 base) (&+ (the-as pointer t1-21) 16)) - ) - (let* ((t0-40 arg0) - (t1-23 (-> t0-40 base)) - ) - (set! (-> (the-as (pointer gs-xyz) t1-23) 0) (new 'static 'gs-xyz :y #x8 :x (+ (* a3-9 256) 8))) - (set! (-> (the-as (pointer gs-reg64) t1-23) 1) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) t1-23) 2) (new 'static 'gs-xyz :x (+ (* a3-9 256) 128))) - (set! (-> (the-as (pointer gs-reg64) t1-23) 3) (gs-reg64 xyz2)) - (set! (-> (the-as (pointer gs-xyz) t1-23) 4) - (new 'static 'gs-xyz :x (+ (* a3-9 256) 136) :y (+ (* a2-6 16) 8)) - ) - (set! (-> (the-as (pointer gs-reg64) t1-23) 5) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) t1-23) 6) (new 'static 'gs-xyz :y (* a2-6 16) :x (+ (* a3-9 256) 256))) - (set! (-> (the-as (pointer gs-reg64) t1-23) 7) (gs-reg64 xyz2)) - (set! (-> t0-40 base) (&+ t1-23 64)) - ) + (dma-buffer-add-gs-set arg0 + (uv (new 'static 'gs-uv :v #x8 :u (+ (* a3-9 256) 8))) + (xyz2 (shr (shl (+ (* a3-9 256) 128) 48) 48)) + (uv (new 'static 'gs-uv :u (+ (* a3-9 256) 136) :v (+ (* a2-6 16) 8))) + (xyz2 (logior (shr (shl (+ (* a3-9 256) 256) 48) 48) (shr (shl (* a2-6 16) 48) 32))) + ) ) ) (let ((t0-42 (/ s5-1 64))) - (let* ((a2-9 arg0) - (a3-10 (the-as object (-> a2-9 base))) - ) - (set! (-> (the-as dma-packet a3-10) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a3-10) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a3-10) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a2-9 base) (&+ (the-as pointer a3-10) 16)) - ) - (let* ((a2-10 arg0) - (a3-12 (the-as object (-> a2-10 base))) - ) - (set! (-> (the-as gs-gif-tag a3-12) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a3-12) regs) GIF_REGS_ALL_AD) - (set! (-> a2-10 base) (&+ (the-as pointer a3-12) 16)) - ) - (let* ((a2-11 arg0) - (a3-14 (-> a2-11 base)) - ) - (set! (-> (the-as (pointer gs-frame) a3-14) 0) - (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp (+ s1-0 t0-42)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-14) 1) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-tex0) a3-14) 2) - (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 (+ s2-5 (* t0-42 32))) - ) - (set! (-> (the-as (pointer gs-reg64) a3-14) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-prim) a3-14) 4) - (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a3-14) 5) (gs-reg64 prim)) - (set! (-> a2-11 base) (&+ a3-14 48)) - ) + (dma-buffer-add-gs-set arg0 + (frame-1 (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp (+ s1-0 t0-42))) + (tex0-1 + (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 (+ s2-5 (* t0-42 32))) + ) + (prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1)) + ) ) ) (dotimes (v1-73 (/ s5-1 16)) - (let* ((a0-74 arg0) - (a1-63 (the-as object (-> a0-74 base))) - ) - (set! (-> (the-as dma-packet a1-63) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a1-63) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a1-63) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-74 base) (&+ (the-as pointer a1-63) 16)) - ) - (let* ((a0-75 arg0) - (a1-65 (the-as object (-> a0-75 base))) - ) - (set! (-> (the-as gs-gif-tag a1-65) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a1-65) regs) GIF_REGS_ALL_AD) - (set! (-> a0-75 base) (&+ (the-as pointer a1-65) 16)) - ) - (let* ((a0-76 arg0) - (a1-67 (-> a0-76 base)) - ) - (set! (-> (the-as (pointer gs-xyz) a1-67) 0) (new 'static 'gs-xyz :y #x8 :x (+ (* v1-73 256) 8))) - (set! (-> (the-as (pointer gs-reg64) a1-67) 1) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) a1-67) 2) (new 'static 'gs-xyz :x (+ (* v1-73 256) 128))) - (set! (-> (the-as (pointer gs-reg64) a1-67) 3) (gs-reg64 xyz2)) - (set! (-> (the-as (pointer gs-xyz) a1-67) 4) - (new 'static 'gs-xyz :x (+ (* v1-73 256) 136) :y (+ (* s4-3 16) 8)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-67) 5) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) a1-67) 6) (new 'static 'gs-xyz :y (* s4-3 16) :x (+ (* v1-73 256) 256))) - (set! (-> (the-as (pointer gs-reg64) a1-67) 7) (gs-reg64 xyz2)) - (set! (-> a0-76 base) (&+ a1-67 64)) - ) + (dma-buffer-add-gs-set arg0 + (uv (new 'static 'gs-uv :v #x8 :u (+ (* v1-73 256) 8))) + (xyz2 (shr (shl (+ (* v1-73 256) 128) 48) 48)) + (uv (new 'static 'gs-uv :u (+ (* v1-73 256) 136) :v (+ (* s4-3 16) 8))) + (xyz2 (logior (shr (shl (+ (* v1-73 256) 256) 48) 48) (shr (shl (* s4-3 16) 48) 32))) + ) ) ) 0 - (none) ) (defmethod draw-envmap-debug ocean ((obj ocean) (arg0 dma-buffer)) (format *stdcon* "draw-envmap-debug~%") (-> arg0 base) - (let* ((v1-1 arg0) - (a0-2 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer a0-2) 16)) - ) - (let* ((v1-2 arg0) - (a0-4 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 4) - (new 'static 'gs-tex0 - :tbw #x1 - :tcc #x1 - :th (log2 64) - :tw (log2 64) - :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x1 + :tcc #x1 + :th (log2 64) + :tw (log2 64) + :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((v1-20 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-20 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-20 1 quad) (-> obj sprite-tmpl quad 1)) @@ -888,44 +490,16 @@ (set-vector! (-> v1-20 6) #x7f60 #x8400 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((v1-24 arg0) - (a0-22 (the-as object (-> v1-24 base))) - ) - (set! (-> (the-as dma-packet a0-22) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-22) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-22) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-24 base) (&+ (the-as pointer a0-22) 16)) - ) - (let* ((v1-25 arg0) - (a0-24 (the-as object (-> v1-25 base))) - ) - (set! (-> (the-as gs-gif-tag a0-24) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-24) regs) GIF_REGS_ALL_AD) - (set! (-> v1-25 base) (&+ (the-as pointer a0-24) 16)) - ) - (let* ((s4-1 arg0) - (s3-1 (-> s4-1 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-1) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-1) 2) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-1) 4) - (new 'static 'gs-tex0 :tbw #x1 :th (log2 64) :tw (log2 64) :tbp0 (-> *ocean-envmap-texture-base* vram-block)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-1) 6) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-1) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-1) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 11) (gs-reg64 texflush)) - (set! (-> s4-1 base) (&+ s3-1 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha)) + (tex0-1 + (new 'static 'gs-tex0 :tbw #x1 :th (log2 64) :tw (log2 64) :tbp0 (-> *ocean-envmap-texture-base* vram-block)) + ) + (tex1-1 (new 'static 'gs-tex1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((v1-44 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-44 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-44 1 quad) (-> obj sprite-tmpl quad 1)) @@ -946,44 +520,19 @@ (f30-0 (/ -65536.0 (the float s4-0))) (f28-0 arg1) ) - (let* ((v1-1 arg0) - (a0-1 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-2 arg0) - (a0-3 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((s2-0 arg0) - (s1-0 (-> s2-0 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s1-0) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s1-0) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s1-0) 2) - (new 'static 'gs-tex0 - :tbw #x1 - :tcc #x1 - :th (log2 64) - :tw (log2 64) - :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s1-0) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-clamp) s1-0) 4) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s1-0) 5) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s1-0) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s1-0) 7) (gs-reg64 texflush)) - (set! (-> s2-0 base) (&+ s1-0 64)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x1 + :tcc #x1 + :th (log2 64) + :tw (log2 64) + :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) + ) + ) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((v1-16 (-> arg0 base))) (set! (-> (the-as (pointer uint128) v1-16)) (-> obj line-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-16) 1) (-> obj line-tmpl quad 1)) @@ -1053,28 +602,7 @@ (defmethod ocean-method-85 ocean ((obj ocean) (arg0 dma-buffer)) (local-vars (sv-48 vector4w) (sv-64 vector4w)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x2 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1))) (let ((v1-3 (-> arg0 base))) (set! (-> (the-as (pointer uint128) v1-3)) (-> obj haze-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-3) 1) (-> obj haze-tmpl quad 1)) @@ -1219,56 +747,32 @@ (defmethod ocean-method-88 ocean ((obj ocean) (arg0 dma-buffer)) (local-vars (sv-48 vector) (sv-64 uint) (sv-80 vector) (sv-96 vector) (sv-112 vector)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x50 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 2) (new 'static 'gs-tex0 - :tbp0 #x100 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x300 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 6) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x50 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (tex0-1 (new 'static 'gs-tex0 + :tbp0 #x100 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x300 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) (let* ((v1-17 *sky-work*) (f0-1 (* 0.000015258789 (the float (-> v1-17 off-s)))) (f1-3 (* 0.000015258789 (the float (-> v1-17 off-t)))) @@ -1378,34 +882,11 @@ (vector-float*! (-> obj sky-color) (-> *time-of-day-context* current-sky-color) 0.25) (+! (-> obj sky-color x) (* 0.5 (- (-> obj sky-color z) (-> obj sky-color x)))) (+! (-> obj sky-color y) (* 0.5 (- (-> obj sky-color z) (-> obj sky-color y)))) - (let* ((v1-6 arg0) - (a0-4 (the-as object (-> v1-6 base))) - ) - (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-6 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((v1-7 arg0) - (a0-6 (the-as object (-> v1-7 base))) - ) - (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD) - (set! (-> v1-7 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-8 arg0) - (a0-8 (-> v1-8 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-8) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-8) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) a0-8) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 5) (gs-reg64 texflush)) - (set! (-> v1-8 base) (&+ a0-8 48)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) (let ((v1-9 (the-as object (-> arg0 base)))) (let ((a1-13 (-> obj sky-color))) (set! (-> (the-as (inline-array vector4w) v1-9) 0 quad) (-> obj sprite-tmpl2 dma-vif quad)) @@ -1432,32 +913,11 @@ ) ) (&+! (-> arg0 base) 80) - (let* ((v1-13 arg0) - (a0-17 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as dma-packet a0-17) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-17) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (&+ (the-as pointer a0-17) 16)) - ) - (let* ((v1-14 arg0) - (a0-19 (the-as object (-> v1-14 base))) - ) - (set! (-> (the-as gs-gif-tag a0-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-19) regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (&+ (the-as pointer a0-19) 16)) - ) - (let* ((v1-15 arg0) - (a0-21 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-xy-offset) a0-21) 0) (new 'static 'gs-xy-offset :ofx #x200 :ofy #x200)) - (set! (-> (the-as (pointer gs-reg64) a0-21) 1) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-texa) a0-21) 2) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-21) 3) (gs-reg64 texa)) - (set! (-> (the-as (pointer uint64) a0-21) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-21) 5) (gs-reg64 texflush)) - (set! (-> v1-15 base) (&+ a0-21 48)) - ) + (dma-buffer-add-gs-set arg0 + (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x200 :ofy #x200)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texflush 0) + ) (let ((v1-16 (the-as adgif-shader (-> arg0 base)))) (set! (-> v1-16 quad 0 quad) (-> obj adgif-tmpl dma-vif quad)) (set! (-> v1-16 quad 1 quad) (-> obj adgif-tmpl quad 1)) @@ -1519,72 +979,22 @@ (ocean-method-88 obj arg0) (set-display-gs-state arg0 (the-as int (-> *ocean-envmap-texture-base* vram-page)) 64 64 0 0) (ocean-method-83 obj arg0 32768.0) - (let* ((v1-44 arg0) - (a0-44 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-44 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-45 arg0) - (a0-46 (the-as object (-> v1-45 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-45 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((s4-4 arg0) - (s3-2 (-> s4-4 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s3-2) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-2) 2) - (new 'static 'gs-tex0 - :tbw #x1 - :tcc #x1 - :th (log2 32) - :tw (log2 64) - :tbp0 (-> *ocean-envmap-texture-base* vram-block) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-2) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-2) 6) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-rgbaq) s3-2) 8) (new 'static 'gs-rgbaq :r #x80 :g #x80 :b #x80 :a #x80 :q 1.0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 9) (gs-reg64 rgbaq)) - (set! (-> (the-as (pointer uint64) s3-2) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 11) (gs-reg64 texflush)) - (set! (-> s4-4 base) (&+ s3-2 96)) - ) - (let* ((v1-63 arg0) - (a0-54 (the-as object (-> v1-63 base))) - ) - (set! (-> (the-as dma-packet a0-54) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-54) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-54) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-63 base) (&+ (the-as pointer a0-54) 16)) - ) - (let* ((v1-64 arg0) - (a0-56 (the-as object (-> v1-64 base))) - ) - (set! (-> (the-as gs-gif-tag a0-56) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-56) regs) GIF_REGS_ALL_AD) - (set! (-> v1-64 base) (&+ (the-as pointer a0-56) 16)) - ) - (let* ((v1-65 arg0) - (a0-58 (-> v1-65 base)) - ) - (set! (-> (the-as (pointer gs-tex1) a0-58) 0) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-58) 1) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) a0-58) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-58) 3) (gs-reg64 texflush)) - (set! (-> v1-65 base) (&+ a0-58 32)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x1 + :tcc #x1 + :th (log2 32) + :tw (log2 64) + :tbp0 (-> *ocean-envmap-texture-base* vram-block) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (rgbaq (new 'static 'gs-rgbaq :r #x80 :g #x80 :b #x80 :a #x80 :q 1.0)) + (texflush 0) + ) + (dma-buffer-add-gs-set arg0 (tex1-1 (new 'static 'gs-tex1)) (texflush 0)) (let ((v1-66 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-66 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-66 1 quad) (-> obj sprite-tmpl quad 1)) diff --git a/goal_src/jak2/engine/gfx/ocean/ocean-vu0.gc b/goal_src/jak2/engine/gfx/ocean/ocean-vu0.gc index ef78ec370e..a38a2f92a0 100644 --- a/goal_src/jak2/engine/gfx/ocean/ocean-vu0.gc +++ b/goal_src/jak2/engine/gfx/ocean/ocean-vu0.gc @@ -7,7 +7,7 @@ ;; DECOMP BEGINS -(define ocean-vu0-block (new 'static 'vu-function :length 0 :qlength 0)) +(define ocean-vu0-block (new 'static 'vu-function)) (defmethod-mips2c "(method 16 ocean)" 16 ocean) ;; ocean-generate-verts (defmethod-mips2c "(method 15 ocean)" 15 ocean) diff --git a/goal_src/jak2/engine/gfx/ocean/ocean.gc b/goal_src/jak2/engine/gfx/ocean/ocean.gc index 539a8ebd24..0b4e1ba405 100644 --- a/goal_src/jak2/engine/gfx/ocean/ocean.gc +++ b/goal_src/jak2/engine/gfx/ocean/ocean.gc @@ -1036,80 +1036,23 @@ ) (defmethod init-buffer! ocean ((obj ocean) (arg0 dma-buffer)) - "Initialize [[ocean]] DMA buffer. - @returns Pointer to the next DMA buffer" - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((s5-0 arg0) - (s4-0 (-> s5-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s4-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s4-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s4-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s4-0) 4) - (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s4-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s4-0) 6) (-> obj tex1)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) s4-0) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-miptbp) s4-0) 10) - (new 'static 'gs-miptbp :tbp1 #x6a0 :tbw1 #x1 :tbp2 #x7a0 :tbp3 #x7e0) - ) - (set! (-> (the-as (pointer gs-reg64) s4-0) 11) (gs-reg64 miptbp1-1)) - (set! (-> (the-as (pointer gs-miptbp) s4-0) 12) (new 'static 'gs-miptbp :tbp1 #x800 :tbp2 #x820 :tbp3 #x840)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 13) (gs-reg64 miptbp2-1)) - (set! (-> (the-as (pointer gs-clamp) s4-0) 14) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 15) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-fogcol) s4-0) 16) (the-as gs-fogcol *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 17) (gs-reg64 fogcol)) - (let ((v0-2 (&+ s4-0 144))) - (set! (-> s5-0 base) v0-2) - v0-2 - ) - ) + "Initialize [[ocean]] DMA buffer." + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :th (log2 128) :tw (log2 128))) + (tex1-1 (-> obj tex1)) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (miptbp1-1 (new 'static 'gs-miptbp :tbp1 #x6a0 :tbw1 #x1 :tbp2 #x7a0 :tbp3 #x7e0)) + (miptbp2-1 (new 'static 'gs-miptbp :tbp1 #x800 :tbp2 #x820 :tbp3 #x840)) + (clamp-1 (new 'static 'gs-clamp)) + (fogcol *fog-color*) + ) + (none) ) (defmethod end-buffer! ocean ((obj ocean) (arg0 dma-buffer)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-texa) a0-5) 0) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 texa)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 (texa (new 'static 'gs-texa :ta1 #x80))) 0 (none) ) @@ -1160,12 +1103,9 @@ (let ((f0-5 1.0) (f30-0 1.0) ) - ;; added check - (when (nonzero? *bigmap*) - (when (= (-> *bigmap* bigmap-index) 13) - (set! f0-5 0.333) - (set! f30-0 0.75) - ) + (when (= (-> *bigmap* bigmap-index) 13) + (set! f0-5 0.333) + (set! f30-0 0.75) ) (set! (-> obj frame-speed) (* (+ 4.0 (-> *setting-control* user-current rain)) f0-5)) (set! (-> obj frame-speed2) (* (+ 5.0 (-> *setting-control* user-current rain)) f0-5)) diff --git a/goal_src/jak2/engine/gfx/shrub/shrubbery.gc b/goal_src/jak2/engine/gfx/shrub/shrubbery.gc index 6e639d90b6..582cb3f15e 100644 --- a/goal_src/jak2/engine/gfx/shrub/shrubbery.gc +++ b/goal_src/jak2/engine/gfx/shrub/shrubbery.gc @@ -10,9 +10,6 @@ ;; DECOMP BEGINS -;;-*-Lisp-*- -(in-package goal) - (defmethod login billboard ((obj billboard)) "Set up the billboard adgif shader" (adgif-shader-login (-> obj flat)) @@ -126,16 +123,6 @@ obj ) -(defmethod inspect prototype-shrubbery ((obj prototype-shrubbery)) - "Inspect all prototypes in a prototype array." - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tlength: ~D~%" (-> obj length)) - (format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data)) - (dotimes (s5-0 (-> obj length)) - (format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0)) - ) - obj - ) (defmethod mem-usage prototype-shrubbery ((obj prototype-shrubbery) (arg0 memory-usage-block) (arg1 int)) "Compute memory usage of all prototypes in a prototype array." @@ -247,7 +234,7 @@ obj ) -(define shrub-vu1-block (new 'static 'vu-function :length #x26a :qlength #x135)) +(define shrub-vu1-block (new 'static 'vu-function)) (defun shrub-num-tris ((shrub shrubbery)) "Get the number of triangles in a shrubbery fragment." @@ -409,7 +396,7 @@ ;; upload the data (set! (-> a3-0 dma) (new 'static 'dma-tag :id (dma-tag-id ref) - :addr (the-as int (-> shrub obj)) + :addr (-> shrub obj) :qwc (+ (-> shrub obj-qwc) (-> shrub vtx-qwc) (-> shrub col-qwc) (-> shrub stq-qwc)) ) ) @@ -605,7 +592,7 @@ (while (nonzero? s2-0) (+! s2-0 -1) (let ((a0-15 (* (shrub-num-tris (the-as shrubbery s3-0)) s4-0)) - (v1-26 (* (the-as uint (-> (the-as shrubbery s3-0) header data 2)) s4-0)) + (v1-26 (* (-> (the-as shrubbery s3-0) header data 2) s4-0)) ) (+! (-> *terrain-stats* shrub tris) a0-15) (+! (-> *terrain-stats* shrub dverts) v1-26) @@ -630,7 +617,7 @@ (while (nonzero? s2-1) (+! s2-1 -1) (let ((a0-28 (* (shrub-num-tris (the-as shrubbery s3-1)) s4-1)) - (v1-44 (* (the-as uint (-> (the-as shrubbery s3-1) header data 2)) s4-1)) + (v1-44 (* (-> (the-as shrubbery s3-1) header data 2) s4-1)) ) (+! (-> *terrain-stats* trans-shrub tris) a0-28) (+! (-> *terrain-stats* trans-shrub dverts) v1-44) @@ -667,16 +654,6 @@ :flag-assert #x900000650 ) -(defmethod inspect dma-test ((obj dma-test)) - (when (not obj) - (set! obj obj) - (goto cfg-4) - ) - (format #t "[~8x] ~A~%" obj 'dma-test) - (format #t "~1Tdata[101] @ #x~X~%" (-> obj data)) - (label cfg-4) - obj - ) (define *dma-test* (new 'global 'dma-test)) @@ -689,17 +666,6 @@ :flag-assert #x900000020 ) -(defmethod inspect dma-test-work ((obj dma-test-work)) - (when (not obj) - (set! obj obj) - (goto cfg-4) - ) - (format #t "[~8x] ~A~%" obj 'dma-test-work) - (format #t "~1Tupload: #~%" (-> obj upload)) - (format #t "~1Tend: #~%" (-> obj end)) - (label cfg-4) - obj - ) (define *dma-test-work* (new 'static 'dma-test-work diff --git a/goal_src/jak2/engine/gfx/sky/sky-tng.gc b/goal_src/jak2/engine/gfx/sky/sky-tng.gc index d461a6d459..9453ed43b5 100644 --- a/goal_src/jak2/engine/gfx/sky/sky-tng.gc +++ b/goal_src/jak2/engine/gfx/sky/sky-tng.gc @@ -428,57 +428,32 @@ vf31: cam 0 (premultiplied by hmge) ) ;; set up for sky DMA: - (let* ((v1-0 arg0) - (a0-1 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a0-3 16))) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x50 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 2) (new 'static 'gs-tex0 - :tbp0 #x100 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x300 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 6) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) - + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x50 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (tex0-1 (new 'static 'gs-tex0 + :tbp0 #x100 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x300 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) ;; set regs for large polygon renderer ;(init-regs-for-large-polygon-draw obj) ;; hack hack hack hack hack! ;;(.lvf vf27 (&-> obj giftag-roof quad)) @@ -619,28 +594,7 @@ vf31: cam 0 (premultiplied by hmge) ;; set up dma (rlet ((vf27 :class vf)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) ;; set up polygon regs (init-regs-for-large-polygon-draw obj) ;(.lvf vf27 (&-> obj giftag-haze quad)) @@ -711,34 +665,11 @@ vf31: cam 0 (premultiplied by hmge) "Draw the roof of the sky box. Uses large-polygon renderer." (rlet ((vf27 :class vf)) ;; GS setup - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a0-5) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-5) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-5) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a0-5 48)) - ) + (dma-buffer-add-gs-set arg0 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) ;; large polygon reg setup (init-regs-for-large-polygon-draw obj) ; (.lvf vf27 (&-> obj giftag-base quad)) @@ -766,30 +697,9 @@ vf31: cam 0 (premultiplied by hmge) (defmethod draw-base sky-work ((obj sky-work) (arg0 dma-buffer)) "Draw the base of the sky box. Uses large-polygon renderer." (rlet ((vf27 :class vf)) - (let* ((v1-0 arg0) - (a1-1 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a1-1 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a1-1 vif0) (new 'static 'vif-tag)) - (set! (-> a1-1 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a1-1 16))) - ) - (let* ((v1-1 arg0) - (a1-3 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a1-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a1-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a1-3 16))) - ) - (let* ((v1-2 arg0) - (a1-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-test) a1-5) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-5) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a1-5 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s5-0 (the-as object (-> arg0 base)))) (&+! (-> arg0 base) 16) ;(.lvf vf27 (&-> obj giftag-base quad)) @@ -812,61 +722,34 @@ vf31: cam 0 (premultiplied by hmge) (defmethod draw-fog sky-work ((obj sky-work) (arg0 dma-buffer)) (let ((s4-0 (-> *sky-texture-anim-array* array-data 8 tex))) - (when s4-0 - (let* ((v1-3 arg0) - (a0-1 (the-as dma-packet (-> v1-3 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (the-as pointer (&+ a0-1 16))) + (if s4-0 + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 + :tcc #x1 + :cld #x1 + :psm (the-as int (-> s4-0 psm)) + :cpsm (-> s4-0 clutpsm) + :cbp (-> s4-0 clutdest) + :th (log2 (-> s4-0 h)) + :tw (log2 (-> s4-0 w)) + :tbw (-> s4-0 width 0) + :tbp0 (-> s4-0 dest 0) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x70 + :afail #x3 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) ) - (let* ((v1-4 arg0) - (a0-3 (the-as gs-gif-tag (-> v1-4 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-4 base) (the-as pointer (the-as gs-gif-tag (&+ a0-3 16)))) - ) - (let* ((s3-0 arg0) - (s2-0 (-> s3-0 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s2-0) 0) - (new 'static 'gs-tex0 - :tcc #x1 - :cld #x1 - :psm (the-as int (-> s4-0 psm)) - :cpsm (-> s4-0 clutpsm) - :cbp (-> s4-0 clutdest) - :th (log2 (-> s4-0 h)) - :tw (log2 (-> s4-0 w)) - :tbw (-> s4-0 width 0) - :tbp0 (-> s4-0 dest 0) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s2-0) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-test) s2-0) 4) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x70 - :afail #x3 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-clamp) s2-0) 6) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s2-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 alpha-1)) - (set! (-> s3-0 base) (&+ s2-0 80)) - ) - ) ) (let* ((v1-26 (the-as (inline-array qword) (-> arg0 base))) (f0-0 (-> *fog-texture-work* min-corner y)) @@ -930,9 +813,9 @@ vf31: cam 0 (premultiplied by hmge) (if (nonzero? (-> (the-as sky-work s4-0) star-colors 0 x)) (stars-transform-asm (the-as sky-work s4-0)) ) - (let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (s5-1 (-> s3-0 base)) - ) + (with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id sky-draw) + ) (draw-roof (the-as sky-work s4-0) s3-0) (init-regs-for-sky-asm (the-as sky-work s4-0)) (if (nonzero? (-> (the-as sky-work s4-0) star-colors 0 x)) @@ -949,20 +832,6 @@ vf31: cam 0 (premultiplied by hmge) (when (nonzero? *sky-texture-anim-array*) ;; added check ;(draw-fog (the-as sky-work s4-0) s3-0) ) - (let ((a3-5 (-> s3-0 base))) - (let ((v1-45 (the-as dma-packet (-> s3-0 base)))) - (set! (-> v1-45 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-45 vif0) (new 'static 'vif-tag)) - (set! (-> v1-45 vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (the-as pointer (&+ v1-45 16))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id sky-draw) - s5-1 - (the-as (pointer dma-tag) a3-5) - ) - ) ) ) (let ((v1-52 *dma-mem-usage*)) @@ -979,67 +848,36 @@ vf31: cam 0 (premultiplied by hmge) ) ) (else - (let* ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf)) - (gp-1 (-> s4-1 base)) - ) + (with-dma-buffer-add-bucket ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id sky-draw) + ) (cond ((-> *blit-displays-work* menu-mode) (let ((f0-0 (-> *blit-displays-work* progress-interp))) - (let* ((a0-43 s4-1) - (a1-30 (the-as dma-packet (-> a0-43 base))) - ) - (set! (-> a1-30 dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> a1-30 vif0) (new 'static 'vif-tag)) - (set! (-> a1-30 vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-43 base) (the-as pointer (&+ a1-30 16))) - ) - (let* ((a0-44 s4-1) - (a1-32 (the-as gs-gif-tag (-> a0-44 base))) - ) - (set! (-> a1-32 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> a1-32 regs) GIF_REGS_ALL_AD) - (set! (-> a0-44 base) (the-as pointer (&+ a1-32 16))) - ) - (let* ((a0-45 s4-1) - (a1-34 (-> a0-45 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a1-34) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a1-34) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a1-34) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-34) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a1-34) 4) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) a1-34) 5) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a1-34) 6) - (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a1-34) 7) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a1-34) 8) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-34) 9) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) a1-34) 10) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-34) 11) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) a1-34) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a1-34) 13) (gs-reg64 texflush)) - (set! (-> a0-45 base) (&+ a1-34 112)) - ) - (let ((a2-40 (the-as (inline-array qword) (-> s4-1 base))) - (a3-7 #x7000) - (t0-1 #x7300) - (a0-46 #x7800) - (a1-36 #x7980) - ) - (set! (-> a2-40 0 quad) (-> obj draw-tmpl2 dma-vif quad)) - (set! (-> a2-40 1 quad) (-> obj draw-tmpl2 quad 1)) - (set-vector! (-> a2-40 2 vector4w) 128 128 128 128) - (set-vector! (-> a2-40 3 vector4w) 8 8 0 0) - (set-vector! (-> a2-40 4 vector4w) a3-7 t0-1 0 0) - (set-vector! (-> a2-40 5 vector4w) 8200 6664 0 0) - (set-vector! (-> a2-40 6 vector4w) a0-46 a1-36 0 0) - ) - (&+! (-> s4-1 base) 112) + (dma-buffer-add-gs-set s4-1 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) + ;; (let ((a2-40 (the-as (inline-array qword) (-> s4-1 base))) + ;; (a3-7 #x7000) + ;; (t0-1 #x7300) + ;; (a0-46 #x7800) + ;; (a1-36 #x7980) + ;; ) + ;; (set! (-> a2-40 0 quad) (-> obj draw-tmpl2 dma-vif quad)) + ;; (set! (-> a2-40 1 quad) (-> obj draw-tmpl2 quad 1)) + ;; (set-vector! (-> a2-40 2 vector4w) 128 128 128 128) + ;; (set-vector! (-> a2-40 3 vector4w) 8 8 0 0) + ;; (set-vector! (-> a2-40 4 vector4w) a3-7 t0-1 0 0) + ;; (set-vector! (-> a2-40 5 vector4w) 8200 6664 0 0) + ;; (set-vector! (-> a2-40 6 vector4w) a0-46 a1-36 0 0) + ;; ) + ;; (&+! (-> s4-1 base) 112) (let ((t0-4 (the-as (inline-array qword) (-> s4-1 base))) (a2-42 #x8000) (a3-9 #x8000) @@ -1054,34 +892,11 @@ vf31: cam 0 (premultiplied by hmge) (set-vector! (-> t0-4 5 vector4w) 8200 6664 0 0) (set-vector! (-> t0-4 6 vector4w) a0-49 a1-37 0 0) (&+! (-> s4-1 base) 112) - (let* ((t0-8 s4-1) - (t1-11 (the-as dma-packet (-> t0-8 base))) - ) - (set! (-> t1-11 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> t1-11 vif0) (new 'static 'vif-tag)) - (set! (-> t1-11 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-8 base) (the-as pointer (&+ t1-11 16))) - ) - (let* ((t0-9 s4-1) - (t1-13 (the-as gs-gif-tag (-> t0-9 base))) - ) - (set! (-> t1-13 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> t1-13 regs) GIF_REGS_ALL_AD) - (set! (-> t0-9 base) (the-as pointer (&+ t1-13 16))) - ) - (let* ((t0-10 s4-1) - (t1-15 (-> t0-10 base)) - ) - (set! (-> (the-as (pointer gs-alpha) t1-15) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) t1-15) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) t1-15) 2) - (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1) - ) - (set! (-> (the-as (pointer gs-reg64) t1-15) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) t1-15) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t1-15) 5) (gs-reg64 texflush)) - (set! (-> t0-10 base) (&+ t1-15 48)) - ) + (dma-buffer-add-gs-set s4-1 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)) + (texflush 0) + ) (let ((t0-11 (the-as (inline-array qword) (-> s4-1 base)))) (set! (-> t0-11 0 quad) (-> obj draw-tmpl2 dma-vif quad)) (set! (-> t0-11 1 quad) (-> obj draw-tmpl2 quad 1)) @@ -1090,31 +905,10 @@ vf31: cam 0 (premultiplied by hmge) (set-vector! (-> t0-11 4 vector4w) a2-42 a3-9 0 0) (set-vector! (-> t0-11 5 vector4w) 2048 1664 0 0) (set-vector! (-> t0-11 6 vector4w) a0-49 a1-37 0 0) + (&+! (-> s4-1 base) 112) ) ) - (&+! (-> s4-1 base) 112) - (let* ((a0-52 s4-1) - (a1-38 (the-as dma-packet (-> a0-52 base))) - ) - (set! (-> a1-38 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a1-38 vif0) (new 'static 'vif-tag)) - (set! (-> a1-38 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-52 base) (the-as pointer (&+ a1-38 16))) - ) - (let* ((a0-53 s4-1) - (a1-40 (the-as gs-gif-tag (-> a0-53 base))) - ) - (set! (-> a1-40 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a1-40 regs) GIF_REGS_ALL_AD) - (set! (-> a0-53 base) (the-as pointer (&+ a1-40 16))) - ) - (let* ((a0-54 s4-1) - (a1-42 (-> a0-54 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a1-42) 0) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) a1-42) 1) (gs-reg64 alpha-1)) - (set! (-> a0-54 base) (&+ a1-42 16)) - ) + (dma-buffer-add-gs-set s4-1 (alpha-1 (new 'static 'gs-alpha))) (let ((a0-57 (the int (+ 128.0 (* 32.0 f0-0)))) (a1-46 (the int (- 128.0 (* 16.0 f0-0)))) (a2-55 (the int (- 128.0 (* 96.0 f0-0)))) @@ -1124,69 +918,61 @@ vf31: cam 0 (premultiplied by hmge) (set! a1-46 128) (set! a2-55 128) ) - (let ((v1-57 3328) - (a3-16 6656) + (let ((v1-57 (* (-> *pc-settings* lbox-height) 16)) + (a3-16 0) ) - (dotimes (t0-12 16) - (let ((t1-22 (the-as (inline-array qword) (-> s4-1 base))) - (t3-0 (* (+ (* t0-12 32) 1792) 16)) - (t2-36 (* (+ (* (+ t0-12 1) 32) 1792) 16)) - ) - (let ((t5-0 (* (+ (* t0-12 16) 256) 16)) - (t4-5 (* (+ (* (+ t0-12 1) 16) 256) 16)) - ) - (set! (-> t1-22 0 quad) (-> obj draw-tmpl2 dma-vif quad)) - (set! (-> t1-22 1 quad) (-> obj draw-tmpl2 quad 1)) - (set-vector! (-> t1-22 2 vector4w) a0-57 a1-46 a2-55 128) - (set-vector! (-> t1-22 3 vector4w) (+ t5-0 8) (+ v1-57 24) 0 0) - (set-vector! (-> t1-22 4 vector4w) t3-0 #x7300 0 0) - (set-vector! (-> t1-22 5 vector4w) (+ t4-5 8) (+ a3-16 24) 0 0) + (let ((t1-22 (the-as (inline-array qword) (-> s4-1 base))) ) - (set-vector! (-> t1-22 6 vector4w) t2-36 #x8d00 0 0) - ) + (set! (-> t1-22 0 quad) (-> obj draw-tmpl2 dma-vif quad)) + (set! (-> t1-22 1 quad) (-> obj draw-tmpl2 quad 1)) + (set-vector! (-> t1-22 2 vector4w) a0-57 a1-46 a2-55 128) + (set-vector! (-> t1-22 3 vector4w) (* 0 16) v1-57 0 0) + (set-vector! (-> t1-22 4 vector4w) (* 1792 16) #x7300 0 0) + (set-vector! (-> t1-22 5 vector4w) (* (-> *pc-settings* lbox-width) 16) a3-16 0 0) + (set-vector! (-> t1-22 6 vector4w) (* 2304 16) #x8d00 0 0) (&+! (-> s4-1 base) 112) ) ) - (let* ((v1-60 s4-1) - (a3-17 (the-as dma-packet (-> v1-60 base))) - ) - (set! (-> a3-17 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a3-17 vif0) (new 'static 'vif-tag)) - (set! (-> a3-17 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-60 base) (the-as pointer (&+ a3-17 16))) - ) - (let* ((v1-61 s4-1) - (a3-19 (the-as gs-gif-tag (-> v1-61 base))) - ) - (set! (-> a3-19 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a3-19 regs) GIF_REGS_ALL_AD) - (set! (-> v1-61 base) (the-as pointer (&+ a3-19 16))) - ) - (let* ((v1-62 s4-1) - (a3-21 (-> v1-62 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a3-21) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a3-21) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a3-21) 2) - (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a3-21) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) a3-21) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-21) 5) (gs-reg64 texflush)) - (set! (-> v1-62 base) (&+ a3-21 48)) - ) - (let ((v1-63 (the-as (inline-array qword) (-> s4-1 base)))) - (set! (-> v1-63 0 quad) (-> obj draw-tmpl2 dma-vif quad)) - (set! (-> v1-63 1 quad) (-> obj draw-tmpl2 quad 1)) - (set-vector! (-> v1-63 2 vector4w) a0-57 a1-46 a2-55 (the int (- 128.0 (* 48.0 f0-0)))) - (set-vector! (-> v1-63 3 vector4w) 0 24 0 0) - (set-vector! (-> v1-63 4 vector4w) #x7000 #x7300 0 0) - (set-vector! (-> v1-63 5 vector4w) 8192 6680 0 0) - (set-vector! (-> v1-63 6 vector4w) #x9000 #x8d00 0 0) - ) + ;; (let ((v1-57 3328) + ;; (a3-16 6656) + ;; ) + ;; (dotimes (t0-12 16) + ;; (let ((t1-22 (the-as (inline-array qword) (-> s4-1 base))) + ;; (t3-0 (* (+ (* t0-12 32) 1792) 16)) + ;; (t2-36 (* (+ (* (+ t0-12 1) 32) 1792) 16)) + ;; ) + ;; (let ((t5-0 (* (+ (* t0-12 16) 256) 16)) + ;; (t4-5 (* (+ (* (+ t0-12 1) 16) 256) 16)) + ;; ) + ;; (set! (-> t1-22 0 quad) (-> obj draw-tmpl2 dma-vif quad)) + ;; (set! (-> t1-22 1 quad) (-> obj draw-tmpl2 quad 1)) + ;; (set-vector! (-> t1-22 2 vector4w) a0-57 a1-46 a2-55 128) + ;; (set-vector! (-> t1-22 3 vector4w) (+ t5-0 8) (+ v1-57 24) 0 0) + ;; (set-vector! (-> t1-22 4 vector4w) t3-0 #x7300 0 0) + ;; (set-vector! (-> t1-22 5 vector4w) (+ t4-5 8) (+ a3-16 24) 0 0) + ;; ) + ;; (set-vector! (-> t1-22 6 vector4w) t2-36 #x8d00 0 0) + ;; ) + ;; (&+! (-> s4-1 base) 112) + ;; ) + ;; ) + ;; (dma-buffer-add-gs-set s4-1 + ;; (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ;; (tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)) + ;; (texflush 0) + ;; ) + ;; (let ((v1-63 (the-as (inline-array qword) (-> s4-1 base)))) + ;; (set! (-> v1-63 0 quad) (-> obj draw-tmpl2 dma-vif quad)) + ;; (set! (-> v1-63 1 quad) (-> obj draw-tmpl2 quad 1)) + ;; (set-vector! (-> v1-63 2 vector4w) a0-57 a1-46 a2-55 (the int (- 128.0 (* 48.0 f0-0)))) + ;; (set-vector! (-> v1-63 3 vector4w) 0 24 0 0) + ;; (set-vector! (-> v1-63 4 vector4w) #x7000 #x7300 0 0) + ;; (set-vector! (-> v1-63 5 vector4w) 8192 6680 0 0) + ;; (set-vector! (-> v1-63 6 vector4w) #x9000 #x8d00 0 0) + ;; ) + ;; (&+! (-> s4-1 base) 112) ) ) - (&+! (-> s4-1 base) 112) (seek! (-> *blit-displays-work* progress-interp) (-> *blit-displays-work* progress-interp-dest) @@ -1194,41 +980,18 @@ vf31: cam 0 (premultiplied by hmge) ) ) (else - (let* ((a0-66 s4-1) - (a1-53 (the-as dma-packet (-> a0-66 base))) - ) - (set! (-> a1-53 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a1-53 vif0) (new 'static 'vif-tag)) - (set! (-> a1-53 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-66 base) (the-as pointer (&+ a1-53 16))) - ) - (let* ((a0-67 s4-1) - (a1-55 (the-as gs-gif-tag (-> a0-67 base))) - ) - (set! (-> a1-55 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a1-55 regs) GIF_REGS_ALL_AD) - (set! (-> a0-67 base) (the-as pointer (&+ a1-55 16))) - ) - (let* ((a0-68 s4-1) - (a1-57 (-> a0-68 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a1-57) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a1-57) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a1-57) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-57) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-rgbaq) a1-57) 4) (new 'static 'gs-rgbaq - :q 1.0 - :a (the int (-> v1-0 current-fog erase-color w)) - :b (the int (-> v1-0 current-fog erase-color z)) - :g (the int (-> v1-0 current-fog erase-color y)) - :r (the int (-> v1-0 current-fog erase-color x)) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a1-57) 5) (gs-reg64 rgbaq)) - (set! (-> a0-68 base) (&+ a1-57 48)) - ) + (dma-buffer-add-gs-set s4-1 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (rgbaq (new 'static 'gs-rgbaq + :q 1.0 + :a (the int (-> v1-0 current-fog erase-color w)) + :b (the int (-> v1-0 current-fog erase-color z)) + :g (the int (-> v1-0 current-fog erase-color y)) + :r (the int (-> v1-0 current-fog erase-color x)) + ) + ) + ) (let ((v1-78 (the-as (inline-array qword) (-> s4-1 base)))) (set! (-> v1-78 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-78 1 quad) (-> obj sprite-tmpl quad 1)) @@ -1241,20 +1004,6 @@ vf31: cam 0 (premultiplied by hmge) (&+! (-> s4-1 base) 32) ) ) - (let ((a3-35 (-> s4-1 base))) - (let ((v1-85 (the-as dma-packet (-> s4-1 base)))) - (set! (-> v1-85 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-85 vif0) (new 'static 'vif-tag)) - (set! (-> v1-85 vif1) (new 'static 'vif-tag)) - (set! (-> s4-1 base) (the-as pointer (&+ v1-85 16))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id sky-draw) - gp-1 - (the-as (pointer dma-tag) a3-35) - ) - ) ) ) ) diff --git a/goal_src/jak2/engine/gfx/sprite/sprite-distort.gc b/goal_src/jak2/engine/gfx/sprite/sprite-distort.gc index 0e93d393a4..6f5876eccb 100644 --- a/goal_src/jak2/engine/gfx/sprite/sprite-distort.gc +++ b/goal_src/jak2/engine/gfx/sprite/sprite-distort.gc @@ -38,21 +38,6 @@ across the screen. The resolution of the circle is defined by the number of "tur :flag-assert #x9000008c0 ) -(defmethod inspect sprite-distorter-sine-tables ((obj sprite-distorter-sine-tables)) - (when (not obj) - (set! obj obj) - (goto cfg-4) - ) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~1Taspx: ~f~%" (-> obj aspx)) - (format #t "~1Taspy: ~f~%" (-> obj aspy)) - (format #t "~1Tentry[128] @ #x~X~%" (-> obj entry)) - (format #t "~1Tientry[9] @ #x~X~%" (-> obj ientry)) - (format #t "~1Tgiftag: #~%" (-> obj giftag)) - (format #t "~1Tcolor: #~%" (-> obj color)) - (label cfg-4) - obj - ) (kmemopen global "sprite-distort-tables") (define *sprite-distorter-sine-tables* (new 'global 'sprite-distorter-sine-tables)) @@ -83,8 +68,8 @@ across the screen. The resolution of the circle is defined by the number of "tur (let ((entry-idx 0) (ientry-idx 0) (turns 3) - (cam-aspx (- (-> *math-camera* perspective data 0))) - (cam-aspy (- (-> *math-camera* perspective data 5))) + (cam-aspx (- (-> *math-camera* perspective vector 0 x))) + (cam-aspy (- (-> *math-camera* perspective vector 1 y))) ) (when (or (!= cam-aspx (-> tbls aspx)) (!= cam-aspy (-> tbls aspy))) (set! (-> tbls aspx) cam-aspx) @@ -151,65 +136,41 @@ across the screen. The resolution of the circle is defined by the number of "tur (none) ) -(define sprite-distort-vu1-block (new 'static 'vu-function :length 63 :qlength 32)) +(define sprite-distort-vu1-block (new 'static 'vu-function)) -;; Sets up GS registers, adds a reference to *sprite-distorter-sine-tables*, and loads the VU program. (defun sprite-init-distorter ((dma-buff dma-buffer)) - (let* ((v1-0 dma-buff) - (a1-0 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) - (let* ((v1-1 dma-buff) - (a1-2 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a1-2) regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id a+d) - :regs1 (gif-reg-id a+d) - :regs2 (gif-reg-id a+d) - :regs3 (gif-reg-id a+d) - :regs4 (gif-reg-id a+d) - :regs5 (gif-reg-id a+d) - :regs6 (gif-reg-id a+d) - :regs7 (gif-reg-id a+d) - :regs8 (gif-reg-id a+d) - :regs9 (gif-reg-id a+d) - :regs10 (gif-reg-id a+d) - :regs11 (gif-reg-id a+d) - :regs12 (gif-reg-id a+d) - :regs13 (gif-reg-id a+d) - :regs14 (gif-reg-id a+d) - :regs15 (gif-reg-id a+d) - ) - ) - (set! (-> v1-1 base) (&+ (the-as pointer a1-2) 16)) - ) - (let* ((v1-2 dma-buff) - (a1-4 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a1-4) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-tex0) a1-4) 2) (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a1-4) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-miptbp) a1-4) 6) (new 'static 'gs-miptbp)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 7) (gs-reg64 miptbp1-1)) - (set! (-> (the-as (pointer gs-clamp) a1-4) 8) (new 'static 'gs-clamp - :wms (gs-tex-wrap-mode region-clamp) - :wmt (gs-tex-wrap-mode region-clamp) - :maxu #x1ff - :maxv #x19f - ) - ) - (set! (-> (the-as (pointer gs-reg64) a1-4) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) a1-4) 10) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 11) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a1-4 96)) + "Sets up GS registers, adds a reference to *sprite-distorter-sine-tables*, and loads the VU program." + (dma-buffer-add-gs-set dma-buff + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (miptbp1-1 (new 'static 'gs-miptbp)) + (clamp-1 (new 'static 'gs-clamp + :wms (gs-tex-wrap-mode region-clamp) + :wmt (gs-tex-wrap-mode region-clamp) + :maxu #x1ff + :maxv #x19f + ) + ) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) + ;; send current aspect used by the sine tables (PC only) + (#when PC_PORT + (let ((packet (the-as dma-packet (-> dma-buff base)))) + (set! (-> packet dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc 1)) + (set! (-> packet vif0) (new 'static 'vif-tag)) + (set! (-> packet vif1) (new 'static 'vif-tag :cmd (vif-cmd pc-port))) + (&+! (-> dma-buff base) 16) + ) + (let ((aspect-vec (the-as vector (-> dma-buff base)))) + (set-vector! aspect-vec + (-> *sprite-distorter-sine-tables* aspx) + (-> *sprite-distorter-sine-tables* aspy) + 0.0 + 0.0 + ) + (&+! (-> dma-buff base) 16) + ) ) (let* ((v1-3 dma-buff) (a1-6 (the-as object (-> v1-3 base))) diff --git a/goal_src/jak2/engine/gfx/sprite/sprite-glow.gc b/goal_src/jak2/engine/gfx/sprite/sprite-glow.gc index ed0b3d267f..66077fca5c 100644 --- a/goal_src/jak2/engine/gfx/sprite/sprite-glow.gc +++ b/goal_src/jak2/engine/gfx/sprite/sprite-glow.gc @@ -262,7 +262,7 @@ ) ) -(define sprite-glow-vu1-block (new 'static 'vu-function #|:length #x86 :qlength 67|#)) +(define sprite-glow-vu1-block (new 'static 'vu-function)) ;; WARN: Return type mismatch vector vs none. (defun sprite-glow-init-consts ((arg0 sprite-glow-consts)) diff --git a/goal_src/jak2/engine/gfx/sprite/sprite.gc b/goal_src/jak2/engine/gfx/sprite/sprite.gc index b903700000..8e0e4842bf 100644 --- a/goal_src/jak2/engine/gfx/sprite/sprite.gc +++ b/goal_src/jak2/engine/gfx/sprite/sprite.gc @@ -9,9 +9,6 @@ the sprite renderer draw 2D or 3D sprites |# -;; TODO: glow is commented out. -;; TODO: distort is commented out. - (defenum sprite-aux-type :bitfield #f :type uint32 @@ -37,20 +34,9 @@ the sprite renderer draw 2D or 3D sprites :flag-assert #x900000010 ) -(defmethod inspect sprite-header ((obj sprite-header)) - (when (not obj) - (set! obj obj) - (goto cfg-4) - ) - (format #t "[~8x] ~A~%" obj 'sprite-header) - (format #t "~1Theader[1] @ #x~X~%" (-> obj header)) - (format #t "~1Tnum-sprites: ~D~%" (-> obj num-sprites)) - (label cfg-4) - obj - ) (defun sprite-setup-header ((hdr sprite-header) (num-sprites int)) - "Setup a sprite-header for the given number of sprites" + "Setup a sprite-header for the given number of sprites" (set! (-> hdr num-sprites) num-sprites) (none) ) @@ -69,16 +55,6 @@ the sprite renderer draw 2D or 3D sprites :flag-assert #x9000004c0 ) -(defmethod inspect sprite-hvdf-data ((obj sprite-hvdf-data)) - (when (not obj) - (set! obj obj) - (goto cfg-4) - ) - (format #t "[~8x] ~A~%" obj 'sprite-hvdf-data) - (format #t "~1Tdata[76] @ #x~X~%" (-> obj data)) - (label cfg-4) - obj - ) ;; Each byte indicates if the corresponding entry in ;; sprite-hvdf-data is allocated or not. @@ -90,17 +66,6 @@ the sprite renderer draw 2D or 3D sprites :flag-assert #x90000004c ) -(defmethod inspect sprite-hvdf-control ((obj sprite-hvdf-control)) - (when (not obj) - (set! obj obj) - (goto cfg-4) - ) - (format #t "[~8x] ~A~%" obj 'sprite-hvdf-control) - (format #t "~1Talloc[76] @ #x~X~%" (-> obj alloc)) - (label cfg-4) - obj - ) - (define *sprite-hvdf-data* (new 'global 'sprite-hvdf-data)) (define *sprite-hvdf-control* (new 'global 'sprite-hvdf-control)) @@ -156,16 +121,6 @@ the sprite renderer draw 2D or 3D sprites ) ) -(defmethod inspect sprite-aux-list ((obj sprite-aux-list)) - (format #t "[~X] sprite-aux-list:~%" obj) - (format #t "~Tnum-entries: ~D~%" (-> obj num-entries)) - (format #t "~Tentry: ~D~%" (-> obj entry)) - (dotimes (s5-0 (-> obj entry)) - (format #t "~T~D : ~X~%" s5-0 (-> obj data s5-0)) - ) - (the-as sprite-aux-list #f) - ) - (define *sprite-aux-list* (new 'global 'sprite-aux-list 256)) (defun clear-sprite-aux-list () @@ -426,7 +381,7 @@ the sprite renderer draw 2D or 3D sprites (none) ) -(define sprite-vu1-block (new 'static 'vu-function :length 0 :qlength 0)) +(define sprite-vu1-block (new 'static 'vu-function)) ;;;;;;;;;;;;;;;;;; ;; sprite-arrays @@ -475,8 +430,8 @@ the sprite renderer draw 2D or 3D sprites ) (let* ((sprite-count (+ group-0-size group-1-size)) - (vec-data-size (* 3 sprite-count)) - (adgif-data-size (* 5 sprite-count)) + (vec-data-size (* 3 sprite-count)) ;; 3 quadwords of vec-data per sprite + (adgif-data-size (* 5 sprite-count)) ;; 5 quadwords of adgif data per sprite (v0-0 (object-new allocation type-to-make @@ -596,9 +551,9 @@ the sprite renderer draw 2D or 3D sprites (set! (-> a1-10 base) (&+ (the-as pointer pkt2) 16)) ) (let ((mtx2 (the-as matrix (-> dma-buff base))) - (f1-0 (-> *math-camera* perspective data 0)) - (f2-0 (-> *math-camera* perspective data 5)) - (f0-1 (* -1.9996 (-> *math-camera* perspective data 0))) + (f1-0 (-> *math-camera* perspective vector 0 x)) + (f2-0 (-> *math-camera* perspective vector 1 y)) + (f0-1 (* -1.9996 (-> *math-camera* perspective vector 0 x))) ) (set-vector! (the-as vector (&+ (the-as pointer mtx2) 0)) f0-1 0.0 0.0 0.0) (set-vector! (the-as vector (&+ (the-as pointer mtx2) 16)) 0.0 (- (* (/ f2-0 f1-0) f0-1)) 0.0 0.0) @@ -828,53 +783,29 @@ the sprite renderer draw 2D or 3D sprites "Main sprite draw function." ;; start of our DMA for all the sprite data (let ((dma-mem-begin (-> *display* frames (-> *display* on-screen) global-buf base))) - ;; draw in global-buf - (let* ((dma-buff (-> *display* frames (-> *display* on-screen) global-buf)) - (dma-bucket-begin (-> dma-buff base)) - ) + (with-dma-buffer-add-bucket ((dma-buff (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id particles) + ) ;; run the distorters - ; (when (or (zero? *screen-shot-work*) (= (-> *screen-shot-work* count) -1)) - ; (sprite-init-distorter dma-buff) - ; (sprite-draw-distorters dma-buff) - ; ) + (when (or (zero? *screen-shot-work*) (= (-> *screen-shot-work* count) -1)) + (sprite-init-distorter dma-buff) + (sprite-draw-distorters dma-buff) + ) ;; first packet - set up the GS registers - (let* ((v1-17 dma-buff) - (pkt1 (the-as dma-packet (-> v1-17 base))) - ) - (set! (-> pkt1 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> pkt1 vif0) (new 'static 'vif-tag)) - (set! (-> pkt1 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-17 base) (&+ (the-as pointer pkt1) 16)) - ) - (let* ((v1-18 dma-buff) - (giftag (the-as gs-gif-tag (-> v1-18 base))) - ) - (set! (-> giftag tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> giftag regs) GIF_REGS_ALL_AD) - (set! (-> v1-18 base) (the-as pointer (&+ giftag 16))) - ) - (let* ((v1-19 dma-buff) - (a0-10 (-> v1-19 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-10) 0) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-clamp) a0-10) 2) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 3) (gs-reg64 clamp-1)) - (set! (-> v1-19 base) (&+ a0-10 32)) - ) + (dma-buffer-add-gs-set dma-buff + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + ) ;; load the VU1 code (dma-buffer-add-vu-function dma-buff sprite-vu1-block 1) @@ -959,20 +890,6 @@ the sprite renderer draw 2D or 3D sprites (set! (-> pkt6 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) (set! (-> v1-26 base) (&+ (the-as pointer pkt6) 16)) ) - (let ((a3-0 (-> dma-buff base))) - (let ((pkt7 (the-as dma-packet (-> dma-buff base)))) - (set! (-> pkt7 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> pkt7 vif0) (new 'static 'vif-tag)) - (set! (-> pkt7 vif1) (new 'static 'vif-tag)) - (set! (-> dma-buff base) (&+ (the-as pointer pkt7) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id particles) - dma-bucket-begin - (the-as (pointer dma-tag) a3-0) - ) - ) ) ;; update memory usage diff --git a/goal_src/jak2/engine/gfx/texture/texture.gc b/goal_src/jak2/engine/gfx/texture/texture.gc index bb8ffd0714..d9a9ac21de 100644 --- a/goal_src/jak2/engine/gfx/texture/texture.gc +++ b/goal_src/jak2/engine/gfx/texture/texture.gc @@ -937,34 +937,12 @@ additionally, some texture pages have a chunk system that allows more specific c The texture data itself is referenced, not copied into the dma-buffer." (while (> height 0) (let ((height-this-time (min 2048 height))) - (let* ((v1-1 buf) - (a0-1 (the-as dma-packet (-> v1-1 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-2 buf) - (a0-3 (the-as gs-gif-tag (-> v1-2 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (the-as pointer (&+ a0-3 16))) - ) - (let* ((v1-3 buf) - (a0-5 (-> v1-3 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-5) 0) (new 'static 'gs-bitbltbuf :dbw (/ width 64) :dbp dest)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-5) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-5) 4) (new 'static 'gs-trxreg :rrw width :rrh height-this-time)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-5) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 trxdir)) - (set! (-> v1-3 base) (&+ a0-5 64)) - ) + (dma-buffer-add-gs-set buf + (bitbltbuf (new 'static 'gs-bitbltbuf :dbw (/ width 64) :dbp dest)) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw width :rrh height-this-time)) + (trxdir (new 'static 'gs-trxdir)) + ) (dma-buffer-add-ref-texture buf data width height-this-time (gs-psm ct32)) ) (+! dest 4096) @@ -1092,28 +1070,7 @@ additionally, some texture pages have a chunk system that allows more specific c ) ;; add a texflush. - (let* ((v1-51 dma-buf) - (a0-24 (the-as dma-packet (-> v1-51 base))) - ) - (set! (-> a0-24 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-24 vif0) (new 'static 'vif-tag)) - (set! (-> a0-24 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-51 base) (the-as pointer (&+ a0-24 16))) - ) - (let* ((v1-52 dma-buf) - (a0-26 (the-as gs-gif-tag (-> v1-52 base))) - ) - (set! (-> a0-26 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-26 regs) GIF_REGS_ALL_AD) - (set! (-> v1-52 base) (the-as pointer (&+ a0-26 16))) - ) - (let* ((v1-53 dma-buf) - (a0-28 (-> v1-53 base)) - ) - (set! (-> (the-as (pointer int64) a0-28) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-28) 1) (gs-reg64 texflush)) - (set! (-> v1-53 base) (&+ a0-28 16)) - ) + (dma-buffer-add-gs-set dma-buf (texflush 1)) (#when PC_PORT (dma-buffer-add-cnt-vif2 dma-buf 1 (new 'static 'vif-tag :cmd (vif-cmd pc-port)) (the-as vif-tag 3)) @@ -1288,9 +1245,9 @@ additionally, some texture pages have a chunk system that allows more specific c (return 0) ) (let ((total-chunks-uploaded 0)) - (let* ((dma-buf (-> *display* frames (-> *display* on-screen) global-buf)) - (s4-0 (-> dma-buf base)) - ) + (with-dma-buffer-add-bucket ((dma-buf (-> *display* frames (-> *display* on-screen) global-buf)) + bucket + ) (set! data-ptr (-> tpage segment 0 block-data)) (set! vram-ptr (shr (-> tpage segment 0 dest) 12)) (set! tpage-num-chunks (the-as int (-> tpage size))) @@ -1344,43 +1301,7 @@ additionally, some texture pages have a chunk system that allows more specific c ) (+! total-chunks-uploaded chunks-pending) ) - (let* ((v1-40 dma-buf) - (a0-27 (the-as dma-packet (-> v1-40 base))) - ) - (set! (-> a0-27 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-27 vif0) (new 'static 'vif-tag)) - (set! (-> a0-27 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-40 base) (the-as pointer (&+ a0-27 16))) - ) - (let* ((v1-41 dma-buf) - (a0-29 (the-as gs-gif-tag (-> v1-41 base))) - ) - (set! (-> a0-29 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-29 regs) GIF_REGS_ALL_AD) - (set! (-> v1-41 base) (the-as pointer (&+ a0-29 16))) - ) - (let* ((v1-42 dma-buf) - (a0-31 (-> v1-42 base)) - ) - (set! (-> (the-as (pointer int64) a0-31) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-31) 1) (gs-reg64 texflush)) - (set! (-> v1-42 base) (&+ a0-31 16)) - ) - - (let ((a3-5 (-> dma-buf base))) - (let ((v1-43 (the-as dma-packet (-> dma-buf base)))) - (set! (-> v1-43 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-43 vif0) (new 'static 'vif-tag)) - (set! (-> v1-43 vif1) (new 'static 'vif-tag)) - (set! (-> dma-buf base) (the-as pointer (&+ v1-43 16))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - bucket - s4-0 - (the-as (pointer dma-tag) a3-5) - ) - ) + (dma-buffer-add-gs-set dma-buf (texflush 1)) ) (shl total-chunks-uploaded 14) ) @@ -1624,7 +1545,7 @@ additionally, some texture pages have a chunk system that allows more specific c ) ) (((tpage-category shrub)) - ;; shrub: works just light tfrag + ;; shrub: works just like tfrag (let ((v1-11 (-> lev texture-mask 2)) (a0-6 (-> lev texture-mask 13)) ) @@ -1645,7 +1566,7 @@ additionally, some texture pages have a chunk system that allows more specific c ;; alpha has some special cases (cond ((= (-> lev index) LEVEL_MAX) ;; default level - ;; if the auto-save-icon-flag is set, upload the alpha texture and clear flag. + ;; if the auto-save-icon-flag is set, clear flag and upload next time. (if (not (-> *bigmap* auto-save-icon-flag)) (set! (-> lev upload-size 8) (upload-vram-pages pool (-> pool segment-common) tpage (tex-upload-mode seg0-1-2) bucket) @@ -1876,7 +1797,7 @@ additionally, some texture pages have a chunk system that allows more specific c ) ) (else - ;; otherwise, only upload level textures if not in mneu-mode. + ;; otherwise, only upload level textures if not in menu-mode. (if (not (-> *blit-displays-work* menu-mode)) (add-level-tpage-dma arg0 @@ -1933,28 +1854,7 @@ additionally, some texture pages have a chunk system that allows more specific c (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length))) ) (add-to-dma-buffer obj gp-0 arg0) - (let* ((v1-3 gp-0) - (a0-1 (the-as dma-packet (-> v1-3 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-4 gp-0) - (a0-3 (the-as gs-gif-tag (-> v1-4 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-4 base) (the-as pointer (&+ a0-3 16))) - ) - (let* ((v1-5 gp-0) - (a0-5 (-> v1-5 base)) - ) - (set! (-> (the-as (pointer int64) a0-5) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 texflush)) - (set! (-> v1-5 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set gp-0 (texflush 1)) (let* ((v1-6 gp-0) (a0-7 (the-as object (-> v1-6 base))) ) @@ -2016,42 +1916,20 @@ additionally, some texture pages have a chunk system that allows more specific c (let ((t1-1 (ash (-> tex w) (- v1-0))) (t2-3 (ash (-> tex h) (- v1-0))) ) - (let* ((t3-2 dma-buff) - (t4-0 (the-as object (-> t3-2 base))) - ) - (set! (-> (the-as dma-packet t4-0) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t4-0) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet t4-0) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t3-2 base) (&+ (the-as pointer t4-0) 16)) - ) - (let* ((t3-3 dma-buff) - (t4-2 (the-as object (-> t3-3 base))) - ) - (set! (-> (the-as gs-gif-tag t4-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag t4-2) regs) GIF_REGS_ALL_AD) - (set! (-> t3-3 base) (&+ (the-as pointer t4-2) 16)) - ) - (let* ((t3-4 dma-buff) - (t4-4 (-> t3-4 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) t4-4) 0) (new 'static 'gs-bitbltbuf - :sbp (-> tex dest v1-0) - :sbw (-> tex width v1-0) - :spsm (the-as int (-> tex psm)) - :dbp (/ dest-loc 64) - :dbw (-> tex width v1-0) - :dpsm (the-as int dest-fmt) - ) - ) - (set! (-> (the-as (pointer gs-reg64) t4-4) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) t4-4) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) t4-4) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) t4-4) 4) (new 'static 'gs-trxreg :rrw t1-1 :rrh t2-3)) - (set! (-> (the-as (pointer gs-reg64) t4-4) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) t4-4) 6) (new 'static 'gs-trxdir :xdir #x2)) - (set! (-> (the-as (pointer gs-reg64) t4-4) 7) (gs-reg64 trxdir)) - (set! (-> t3-4 base) (&+ t4-4 64)) - ) + (dma-buffer-add-gs-set dma-buff + (bitbltbuf (new 'static 'gs-bitbltbuf + :sbp (-> tex dest v1-0) + :sbw (-> tex width v1-0) + :spsm (the-as int (-> tex psm)) + :dbp (/ dest-loc 64) + :dbw (-> tex width v1-0) + :dpsm (the-as int dest-fmt) + ) + ) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw t1-1 :rrh t2-3)) + (trxdir (new 'static 'gs-trxdir :xdir #x2)) + ) ) (set! (-> tex dest v1-0) (the-as uint (/ dest-loc 64))) ) @@ -2059,81 +1937,37 @@ additionally, some texture pages have a chunk system that allows more specific c ((< clut-dst 0) ) ((= (-> tex psm) (gs-psm mt4)) - (let* ((v1-7 dma-buff) - (a2-2 (the-as object (-> v1-7 base))) - ) - (set! (-> (the-as dma-packet a2-2) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-2) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-7 base) (&+ (the-as pointer a2-2) 16)) - ) - (let* ((v1-8 dma-buff) - (a2-4 (the-as object (-> v1-8 base))) - ) - (set! (-> (the-as gs-gif-tag a2-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a2-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-8 base) (&+ (the-as pointer a2-4) 16)) - ) - (let* ((v1-9 dma-buff) - (a2-6 (-> v1-9 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a2-6) 0) (new 'static 'gs-bitbltbuf - :sbw #x1 - :dbw #x1 - :dpsm (-> tex clutpsm) - :dbp (/ clut-dst 64) - :spsm (-> tex clutpsm) - :sbp (-> tex clutdest) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a2-6) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a2-6) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a2-6) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a2-6) 4) (new 'static 'gs-trxreg :rrw #x8 :rrh #x2)) - (set! (-> (the-as (pointer gs-reg64) a2-6) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a2-6) 6) (new 'static 'gs-trxdir :xdir #x2)) - (set! (-> (the-as (pointer gs-reg64) a2-6) 7) (gs-reg64 trxdir)) - (set! (-> v1-9 base) (&+ a2-6 64)) - ) + (dma-buffer-add-gs-set dma-buff + (bitbltbuf (new 'static 'gs-bitbltbuf + :sbw #x1 + :dbw #x1 + :dpsm (-> tex clutpsm) + :dbp (/ clut-dst 64) + :spsm (-> tex clutpsm) + :sbp (-> tex clutdest) + ) + ) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw #x8 :rrh #x2)) + (trxdir (new 'static 'gs-trxdir :xdir #x2)) + ) (set! (-> tex clutdest) (the-as uint (/ clut-dst 64))) ) ((= (-> tex psm) (gs-psm mt8)) - (let* ((v1-13 dma-buff) - (a2-9 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as dma-packet a2-9) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-9) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-9) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((v1-14 dma-buff) - (a2-11 (the-as object (-> v1-14 base))) - ) - (set! (-> (the-as gs-gif-tag a2-11) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a2-11) regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (&+ (the-as pointer a2-11) 16)) - ) - (let* ((v1-15 dma-buff) - (a2-13 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a2-13) 0) (new 'static 'gs-bitbltbuf - :sbw #x2 - :dbw #x2 - :dpsm (-> tex clutpsm) - :dbp (/ clut-dst 64) - :spsm (-> tex clutpsm) - :sbp (-> tex clutdest) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a2-13) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a2-13) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a2-13) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a2-13) 4) (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) - (set! (-> (the-as (pointer gs-reg64) a2-13) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a2-13) 6) (new 'static 'gs-trxdir :xdir #x2)) - (set! (-> (the-as (pointer gs-reg64) a2-13) 7) (gs-reg64 trxdir)) - (set! (-> v1-15 base) (&+ a2-13 64)) - ) + (dma-buffer-add-gs-set dma-buff + (bitbltbuf (new 'static 'gs-bitbltbuf + :sbw #x2 + :dbw #x2 + :dpsm (-> tex clutpsm) + :dbp (/ clut-dst 64) + :spsm (-> tex clutpsm) + :sbp (-> tex clutdest) + ) + ) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) + (trxdir (new 'static 'gs-trxdir :xdir #x2)) + ) (set! (-> tex clutdest) (the-as uint (/ clut-dst 64))) ) ) @@ -2209,28 +2043,7 @@ additionally, some texture pages have a chunk system that allows more specific c (texture-relocate s4-0 s3-5 s2-5 (the-as gs-psm s1-5) -1) (font-set-tex0 (the-as (pointer gs-tex0) (-> *font-work* large-font-3-tmpl)) s3-5 s2-5 s1-5 sv-20) ) - (let* ((v1-28 s4-0) - (a0-26 (the-as dma-packet (-> v1-28 base))) - ) - (set! (-> a0-26 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-26 vif0) (new 'static 'vif-tag)) - (set! (-> a0-26 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-28 base) (the-as pointer (&+ a0-26 16))) - ) - (let* ((v1-29 s4-0) - (a0-28 (the-as gs-gif-tag (-> v1-29 base))) - ) - (set! (-> a0-28 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-28 regs) GIF_REGS_ALL_AD) - (set! (-> v1-29 base) (the-as pointer (&+ a0-28 16))) - ) - (let* ((v1-30 s4-0) - (a0-30 (-> v1-30 base)) - ) - (set! (-> (the-as (pointer int64) a0-30) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-30) 1) (gs-reg64 texflush)) - (set! (-> v1-30 base) (&+ a0-30 16)) - ) + (dma-buffer-add-gs-set s4-0 (texflush 1)) (let* ((v1-31 s4-0) (a0-32 (the-as object (-> v1-31 base))) ) diff --git a/goal_src/jak2/engine/gfx/tfrag/tfrag-near.gc b/goal_src/jak2/engine/gfx/tfrag/tfrag-near.gc index 27c1f2355b..e65e3043af 100644 --- a/goal_src/jak2/engine/gfx/tfrag/tfrag-near.gc +++ b/goal_src/jak2/engine/gfx/tfrag/tfrag-near.gc @@ -7,7 +7,7 @@ ;; DECOMP BEGINS -(define tnear-vu1-block (new 'static 'vu-function :length #x38b :qlength #x1c6)) +(define tnear-vu1-block (new 'static 'vu-function)) (defun-debug tfrag-details ((arg0 tfragment)) (format 0 "id = ~d~%" (-> arg0 id)) diff --git a/goal_src/jak2/engine/gfx/tfrag/tfrag.gc b/goal_src/jak2/engine/gfx/tfrag/tfrag.gc index 317623c261..3b872b7785 100644 --- a/goal_src/jak2/engine/gfx/tfrag/tfrag.gc +++ b/goal_src/jak2/engine/gfx/tfrag/tfrag.gc @@ -186,7 +186,7 @@ (define *tfrag-display-stats* #f) -(define tfrag-vu1-block (new 'static 'vu-function :length 0 :qlength 0)) +(define tfrag-vu1-block (new 'static 'vu-function)) (defun tfrag-data-setup ((arg0 tfrag-data) (arg1 int) (arg2 int)) (let ((v1-0 *math-camera*)) diff --git a/goal_src/jak2/engine/gfx/tie/tie.gc b/goal_src/jak2/engine/gfx/tie/tie.gc index 48c420c011..890b6d7982 100644 --- a/goal_src/jak2/engine/gfx/tie/tie.gc +++ b/goal_src/jak2/engine/gfx/tie/tie.gc @@ -274,7 +274,7 @@ :flag-assert #x9000000a0 ) -(define tie-vu1-block (new 'static 'vu-function :length 0 :qlength 0)) +(define tie-vu1-block (new 'static 'vu-function)) (defun tie-init-consts ((arg0 tie-consts) (arg1 gs-alpha) (arg2 gs-test) (arg3 gs-test)) (set! (-> arg0 adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1)) @@ -395,28 +395,7 @@ ) (defun tie-end-buffer ((arg0 dma-buffer)) - (let* ((v1-0 arg0) - (a1-0 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a1-0 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a1-0 vif0) (new 'static 'vif-tag)) - (set! (-> a1-0 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a1-0 16))) - ) - (let* ((v1-1 arg0) - (a1-2 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a1-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a1-2 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a1-2 16))) - ) - (let* ((v1-2 arg0) - (a1-4 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-test) a1-4) 0) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) - (set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a1-4 16)) - ) + (dma-buffer-add-gs-set arg0 (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))) (let* ((v1-3 arg0) (a1-6 (the-as dma-packet (-> v1-3 base))) ) @@ -432,10 +411,10 @@ (set! (-> (the-as (pointer vif-tag) a0-1) 1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) (set! (-> (the-as (pointer vif-tag) a0-1) 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> (the-as (pointer vif-tag) a0-1) 3) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1)) - (set! (-> (the-as (pointer int32) a0-1) 4) 0) - (set! (-> (the-as (pointer int32) a0-1) 5) 0) - (set! (-> (the-as (pointer int32) a0-1) 6) 0) - (set! (-> (the-as (pointer int32) a0-1) 7) 0) + (set! (-> (the-as (pointer vif-tag) a0-1) 4) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) a0-1) 5) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) a0-1) 6) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) a0-1) 7) (new 'static 'vif-tag)) (set! (-> v1-4 base) (&+ a0-1 32)) ) 0 diff --git a/goal_src/jak2/engine/gfx/warp.gc b/goal_src/jak2/engine/gfx/warp.gc index dce0921bd0..b4af5572b9 100644 --- a/goal_src/jak2/engine/gfx/warp.gc +++ b/goal_src/jak2/engine/gfx/warp.gc @@ -7,6 +7,18 @@ ;; DECOMP BEGINS +(defun fx-copy-buf ((arg0 dma-buffer)) + "draw the current framebuffer to tbp #x3300 (13056)" + (#when PC_PORT + (dma-buffer-add-cnt-vif2 arg0 1 (new 'static 'vif-tag :cmd (vif-cmd pc-port) :imm #x10) ;; kind - buffer->texture + (new 'static 'vif-tag :cmd (vif-cmd pc-port) :imm #x3300)) + (dma-buffer-add-uint128 arg0 0) + ) + (set-dirty-mask! (-> *level* default-level) 5 #xd0000 #x4c000) + 0 + (none) + ) + (define *warp-shader* (new 'static 'adgif-shader :reg-0 #x6 :reg-1 #x14 diff --git a/goal_src/jak2/engine/scene/scene.gc b/goal_src/jak2/engine/scene/scene.gc index 5a70845ded..7c02b12d58 100644 --- a/goal_src/jak2/engine/scene/scene.gc +++ b/goal_src/jak2/engine/scene/scene.gc @@ -594,41 +594,17 @@ (unpack-comp-rle (the-as (pointer int8) sv-16) (the-as (pointer int8) (-> arg0 data))) (&+! (-> s4-0 base) (logand -16 (+ (shr (* gp-0 s5-0) 1) 15))) ) - (let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (s4-1 (-> s3-0 base)) - ) + (with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id subtitle) + ) (upload-vram-data s3-0 0 (-> arg0 palette) 2 8) (let ((s0-0 20)) - (let* ((v1-13 s3-0) - (a0-7 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as dma-packet a0-7) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-7) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a0-7) 16)))) - ) - (let* ((v1-14 s3-0) - (a0-9 (the-as gs-gif-tag (-> v1-14 base))) - ) - (set! (-> a0-9 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> a0-9 regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (the-as pointer (&+ a0-9 16))) - ) - (let* ((v1-15 s3-0) - (a0-11 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-11) 0) - (new 'static 'gs-bitbltbuf :dbp #x1 :dbw (shr gp-0 6) :dpsm s0-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-11) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-11) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-11) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-11) 4) (new 'static 'gs-trxreg :rrw gp-0 :rrh s5-0)) - (set! (-> (the-as (pointer gs-reg64) a0-11) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-11) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-11) 7) (gs-reg64 trxdir)) - (set! (-> v1-15 base) (&+ a0-11 64)) - ) + (dma-buffer-add-gs-set s3-0 + (bitbltbuf (new 'static 'gs-bitbltbuf :dbp #x1 :dbw (shr gp-0 6) :dpsm s0-0)) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw gp-0 :rrh s5-0)) + (trxdir (new 'static 'gs-trxdir)) + ) (let ((t9-2 dma-buffer-add-ref-texture) (a0-13 s3-0) (a2-8 gp-0) @@ -639,44 +615,14 @@ ) (set! sv-32 (+ (log2 (the-as int (+ gp-0 -1))) 1)) (let ((v1-17 (+ (log2 (the-as int (+ s5-0 -1))) 1))) - (let* ((a0-16 s3-0) - (a1-23 (the-as object (-> a0-16 base))) - ) - (set! (-> (the-as dma-packet a1-23) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a1-23) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a1-23) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-16 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a1-23) 16)))) - ) - (let* ((a0-17 s3-0) - (a1-25 (the-as object (-> a0-17 base))) - ) - (set! (-> (the-as gs-gif-tag a1-25) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a1-25) regs) GIF_REGS_ALL_AD) - (set! (-> a0-17 base) (&+ (the-as pointer a1-25) 16)) - ) - (let* ((a0-18 s3-0) - (a1-27 (-> a0-18 base)) - ) - (set! (-> (the-as (pointer gs-test) a1-27) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-27) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a1-27) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-27) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a1-27) 4) - (new 'static 'gs-tex0 :tbp0 #x1 :tcc #x1 :cld #x1 :psm s0-0 :th v1-17 :tw sv-32 :tbw (shr gp-0 6)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-27) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a1-27) 6) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a1-27) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) a1-27) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-27) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) a1-27) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a1-27) 11) (gs-reg64 texflush)) - (set! (-> a0-18 base) (&+ a1-27 96)) - ) + (dma-buffer-add-gs-set s3-0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x1 :tcc #x1 :cld #x1 :psm s0-0 :th v1-17 :tw sv-32 :tbw (shr gp-0 6))) + (tex1-1 (new 'static 'gs-tex1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) ) ) (let* ((v1-28 (-> s3-0 base)) @@ -690,30 +636,10 @@ (set! (-> (the-as (pointer uint128) v1-28) 0) (-> *subtitle-work* draw-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-28) 1) (-> *subtitle-work* draw-tmpl quad 1)) (set! (-> (the-as (pointer uint128) v1-28) 2) (-> *subtitle-work* color0 quad)) - (let ((t0-8 (the-as gs-gif-tag (&+ v1-28 48)))) - (set! (-> t0-8 word 0) (the-as uint 0)) - (set! (-> t0-8 word 1) (the-as uint 0)) - (set! (-> t0-8 word 2) (the-as uint 0)) - (set! (-> t0-8 word 3) (the-as uint 0)) - ) - (let ((t0-9 (the-as object (&+ v1-28 64)))) - (set! (-> (the-as gs-gif-tag t0-9) word 0) (* a2-23 16)) - (set! (-> (the-as gs-gif-tag t0-9) word 1) (the-as uint (* a3-8 16))) - (set! (-> (the-as gs-gif-tag t0-9) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag t0-9) word 3) (the-as uint 0)) - ) - (let ((a2-26 (the-as object (&+ v1-28 80)))) - (set! (-> (the-as gs-gif-tag a2-26) word 0) (* gp-0 16)) - (set! (-> (the-as gs-gif-tag a2-26) word 1) (* s5-0 16)) - (set! (-> (the-as gs-gif-tag a2-26) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag a2-26) word 3) (the-as uint 0)) - ) - (let ((v1-29 (the-as object (&+ v1-28 96)))) - (set! (-> (the-as gs-gif-tag v1-29) word 0) (* a0-23 16)) - (set! (-> (the-as gs-gif-tag v1-29) word 1) (the-as uint (* a1-33 16))) - (set! (-> (the-as gs-gif-tag v1-29) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag v1-29) word 3) (the-as uint 0)) - ) + (set-vector! (the-as vector4w (&+ v1-28 48)) 0 0 0 0) + (set-vector! (the-as vector4w (&+ v1-28 64)) (the-as int (* a2-23 16)) (* a3-8 16) 0 0) + (set-vector! (the-as vector4w (&+ v1-28 80)) (the-as int (* gp-0 16)) (the-as int (* s5-0 16)) 0 0) + (set-vector! (the-as vector4w (&+ v1-28 96)) (the-as int (* a0-23 16)) (* a1-33 16) 0 0) ) (&+! (-> s3-0 base) 112) (let* ((v1-32 (-> s3-0 base)) @@ -727,49 +653,16 @@ (set! (-> (the-as (pointer uint128) v1-32) 0) (-> *subtitle-work* draw-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-32) 1) (-> *subtitle-work* draw-tmpl quad 1)) (set! (-> (the-as (pointer uint128) v1-32) 2) (-> *subtitle-work* color1 quad)) - (let ((t0-16 (the-as gs-gif-tag (&+ v1-32 48)))) - (set! (-> t0-16 word 0) (the-as uint 0)) - (set! (-> t0-16 word 1) (the-as uint 0)) - (set! (-> t0-16 word 2) (the-as uint 0)) - (set! (-> t0-16 word 3) (the-as uint 0)) - ) - (let ((t0-17 (the-as object (&+ v1-32 64)))) - (set! (-> (the-as gs-gif-tag t0-17) word 0) (* a1-38 16)) - (set! (-> (the-as gs-gif-tag t0-17) word 1) (the-as uint (* a3-11 16))) - (set! (-> (the-as gs-gif-tag t0-17) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag t0-17) word 3) (the-as uint 0)) - ) - (let ((a1-41 (the-as object (&+ v1-32 80)))) - (set! (-> (the-as gs-gif-tag a1-41) word 0) (* gp-0 16)) - (set! (-> (the-as gs-gif-tag a1-41) word 1) (* s5-0 16)) - (set! (-> (the-as gs-gif-tag a1-41) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag a1-41) word 3) (the-as uint 0)) - ) - (let ((v1-33 (the-as object (&+ v1-32 96)))) - (set! (-> (the-as gs-gif-tag v1-33) word 0) (* a0-30 16)) - (set! (-> (the-as gs-gif-tag v1-33) word 1) (the-as uint (* a2-28 16))) - (set! (-> (the-as gs-gif-tag v1-33) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag v1-33) word 3) (the-as uint 0)) - ) + (set-vector! (the-as vector4w (&+ v1-32 48)) 0 0 0 0) + (set-vector! (the-as vector4w (&+ v1-32 64)) (the-as int (* a1-38 16)) (* a3-11 16) 0 0) + (set-vector! (the-as vector4w (&+ v1-32 80)) (the-as int (* gp-0 16)) (the-as int (* s5-0 16)) 0 0) + (set-vector! (the-as vector4w (&+ v1-32 96)) (the-as int (* a0-30 16)) (* a2-28 16) 0 0) ) (&+! (-> s3-0 base) 112) (set-dirty-mask! (-> *level* default-level) 8 (the-as int (* gp-0 s5-0)) 256) - (let ((a3-15 (-> s3-0 base))) - (let ((v1-37 (the-as object (-> s3-0 base)))) - (set! (-> (the-as dma-packet v1-37) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-37) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-37) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id subtitle) - s4-1 - (the-as (pointer dma-tag) a3-15) - ) - ) ) ) + (none) ) (defbehavior process-drawable-draw-subtitles process-drawable () @@ -984,8 +877,7 @@ (!= (-> *setting-control* user-current movie) (process->ppointer self)) ) *progress-process* - ;; modified - (#if STREAM_PLAY_HACK #f (!= (get-status *gui-control* (the-as sound-id (-> self gui-id))) 3)) + (!= (get-status *gui-control* (the-as sound-id (-> self gui-id))) 3) ) ) (suspend) @@ -1062,7 +954,7 @@ ) (v1-167 (get-status *gui-control* (the-as sound-id a1-26))) ) - (#if STREAM_PLAY_HACK #f (not (or (= v1-167 (gui-status ready)) (= v1-167 (gui-status active))))) + (not (or (= v1-167 (gui-status ready)) (= v1-167 (gui-status active)))) ) ) ) diff --git a/goal_src/jak2/engine/ui/bigmap-h.gc b/goal_src/jak2/engine/ui/bigmap-h.gc index 2a28450ac5..7763a35f6e 100644 --- a/goal_src/jak2/engine/ui/bigmap-h.gc +++ b/goal_src/jak2/engine/ui/bigmap-h.gc @@ -150,7 +150,7 @@ (bigmap-method-19 (_type_) int 19) (bigmap-method-20 (_type_) int 20) (bigmap-method-21 (_type_ int int) int 21) - (bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int int) none 22) + (bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int gs-psm) none 22) (bigmap-method-23 (_type_) none 23) (bigmap-method-24 (_type_ dma-buffer) none 24) (bigmap-method-25 (_type_ dma-buffer) none 25) diff --git a/goal_src/jak2/engine/ui/bigmap.gc b/goal_src/jak2/engine/ui/bigmap.gc index dd9fc23bcc..3c311e523e 100644 --- a/goal_src/jak2/engine/ui/bigmap.gc +++ b/goal_src/jak2/engine/ui/bigmap.gc @@ -219,40 +219,16 @@ (none) ) -(defmethod bigmap-method-22 bigmap ((obj bigmap) (arg0 dma-buffer) (arg1 (pointer uint32)) (arg2 int) (arg3 int) (arg4 int) (arg5 int)) +(defmethod bigmap-method-22 bigmap ((obj bigmap) (arg0 dma-buffer) (arg1 (pointer uint32)) (arg2 int) (arg3 int) (arg4 int) (arg5 gs-psm)) (local-vars (sv-16 int)) (set! sv-16 arg2) - (let* ((v1-0 arg0) - (a0-1 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-5) 0) - (new 'static 'gs-bitbltbuf :dpsm arg5 :dbp sv-16 :dbw (/ arg3 64)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-5) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-5) 4) (new 'static 'gs-trxreg :rrw arg3 :rrh arg4)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-5) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 trxdir)) - (set! (-> v1-2 base) (&+ a0-5 64)) - ) - (dma-buffer-add-ref-texture arg0 arg1 arg3 arg4 (the-as gs-psm arg5)) + (dma-buffer-add-gs-set arg0 + (bitbltbuf (new 'static 'gs-bitbltbuf :dpsm (the-as int arg5) :dbp sv-16 :dbw (/ arg3 64))) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw arg3 :rrh arg4)) + (trxdir (new 'static 'gs-trxdir)) + ) + (dma-buffer-add-ref-texture arg0 arg1 arg3 arg4 arg5) 0 (none) ) @@ -277,234 +253,60 @@ (let ((v1-1 (-> s4-0 0)) (s3-0 (-> s4-0 1)) ) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-1 16) (the-as uint s4-0))) 0 16 16 0) - (let* ((v1-4 arg0) - (a0-2 (the-as dma-packet (-> v1-4 base))) - ) - (set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-2 vif0) (new 'static 'vif-tag)) - (set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-4 base) (the-as pointer (&+ a0-2 16))) - ) - (let* ((v1-5 arg0) - (a0-4 (the-as gs-gif-tag (-> v1-5 base))) - ) - (set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-4 regs) GIF_REGS_ALL_AD) - (set! (-> v1-5 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((v1-6 arg0) - (a0-6 (-> v1-6 base)) - ) - (set! (-> (the-as (pointer int64) a0-6) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 texflush)) - (set! (-> v1-6 base) (&+ a0-6 16)) - ) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ s3-0 16) (the-as uint s4-0))) 8 512 208 19) - ) - (let* ((v1-10 arg0) - (a0-9 (the-as dma-packet (-> v1-10 base))) - ) - (set! (-> a0-9 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-9 vif0) (new 'static 'vif-tag)) - (set! (-> a0-9 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-10 base) (the-as pointer (&+ a0-9 16))) - ) - (let* ((v1-11 arg0) - (a0-11 (the-as gs-gif-tag (-> v1-11 base))) - ) - (set! (-> a0-11 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-11 regs) GIF_REGS_ALL_AD) - (set! (-> v1-11 base) (the-as pointer (&+ a0-11 16))) - ) - (let* ((v1-12 arg0) - (a0-13 (-> v1-12 base)) - ) - (set! (-> (the-as (pointer gs-tex0) a0-13) 0) - (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a0-13) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a0-13) 2) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-13) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer int64) a0-13) 4) 1) - (set! (-> (the-as (pointer gs-reg64) a0-13) 5) (gs-reg64 texflush)) - (set! (-> v1-12 base) (&+ a0-13 48)) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-1 16) (the-as uint s4-0))) 0 16 16 (gs-psm ct32)) + (dma-buffer-add-gs-set arg0 (texflush 1)) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ s3-0 16) (the-as uint s4-0))) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1)) + (tex1-1 (new 'static 'gs-tex1)) + (texflush 1) + ) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2)) (let ((v1-16 (+ #x1a000 (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-16 16) (the-as uint s4-0))) 8 512 208 19) - ) - (let* ((v1-19 arg0) - (a0-18 (the-as dma-packet (-> v1-19 base))) - ) - (set! (-> a0-18 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-18 vif0) (new 'static 'vif-tag)) - (set! (-> a0-18 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-19 base) (the-as pointer (&+ a0-18 16))) - ) - (let* ((v1-20 arg0) - (a0-20 (the-as gs-gif-tag (-> v1-20 base))) - ) - (set! (-> a0-20 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-20 regs) GIF_REGS_ALL_AD) - (set! (-> v1-20 base) (the-as pointer (&+ a0-20 16))) - ) - (let* ((v1-21 arg0) - (a0-22 (-> v1-21 base)) - ) - (set! (-> (the-as (pointer int64) a0-22) 0) 0) - (set! (-> (the-as (pointer gs-reg64) a0-22) 1) (gs-reg64 texflush)) - (set! (-> v1-21 base) (&+ a0-22 16)) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-16 16) (the-as uint s4-0))) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 (texflush 0)) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1)) (let ((v1-25 (+ (-> s4-0 0) 1024)) (s3-1 (+ #x34000 (-> s4-0 1))) ) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-25 16) (the-as uint s4-0))) 0 16 16 0) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ s3-1 16) (the-as uint s4-0))) 8 512 208 19) - ) - (let* ((v1-31 arg0) - (a0-28 (the-as dma-packet (-> v1-31 base))) - ) - (set! (-> a0-28 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-28 vif0) (new 'static 'vif-tag)) - (set! (-> a0-28 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-31 base) (the-as pointer (&+ a0-28 16))) - ) - (let* ((v1-32 arg0) - (a0-30 (the-as gs-gif-tag (-> v1-32 base))) - ) - (set! (-> a0-30 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-30 regs) GIF_REGS_ALL_AD) - (set! (-> v1-32 base) (the-as pointer (&+ a0-30 16))) - ) - (let* ((v1-33 arg0) - (a0-32 (-> v1-33 base)) - ) - (set! (-> (the-as (pointer gs-tex0) a0-32) 0) - (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :tcc #x1 :cld #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a0-32) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a0-32) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-32) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer int64) a0-32) 4) 1) - (set! (-> (the-as (pointer gs-reg64) a0-32) 5) (gs-reg64 texflush)) - (set! (-> v1-33 base) (&+ a0-32 48)) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-25 16) (the-as uint s4-0))) 0 16 16 (gs-psm ct32)) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ s3-1 16) (the-as uint s4-0))) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :tcc #x1 :cld #x1)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texflush 1) + ) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2)) (let ((v1-37 (+ #x4e000 (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-37 16) (the-as uint s4-0))) 8 512 208 19) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-37 16) (the-as uint s4-0))) 8 512 208 (gs-psm mt8)) ) ) - (let* ((v1-40 arg0) - (a0-37 (the-as dma-packet (-> v1-40 base))) - ) - (set! (-> a0-37 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-37 vif0) (new 'static 'vif-tag)) - (set! (-> a0-37 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-40 base) (the-as pointer (&+ a0-37 16))) - ) - (let* ((v1-41 arg0) - (a0-39 (the-as gs-gif-tag (-> v1-41 base))) - ) - (set! (-> a0-39 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-39 regs) GIF_REGS_ALL_AD) - (set! (-> v1-41 base) (the-as pointer (&+ a0-39 16))) - ) - (let* ((v1-42 arg0) - (a0-41 (-> v1-42 base)) - ) - (set! (-> (the-as (pointer int64) a0-41) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-41) 1) (gs-reg64 texflush)) - (set! (-> v1-42 base) (&+ a0-41 16)) - ) + (dma-buffer-add-gs-set arg0 (texflush 1)) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1)) (none) ) (defmethod bigmap-method-25 bigmap ((obj bigmap) (arg0 dma-buffer)) (let ((s4-0 (the-as (pointer uint32) (-> obj bigmap-image art-group)))) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ (-> s4-0 0) 16) (the-as uint s4-0))) 0 16 16 0) - (let* ((v1-5 arg0) - (a0-2 (the-as dma-packet (-> v1-5 base))) - ) - (set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-2 vif0) (new 'static 'vif-tag)) - (set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-5 base) (the-as pointer (&+ a0-2 16))) - ) - (let* ((v1-6 arg0) - (a0-4 (the-as gs-gif-tag (-> v1-6 base))) - ) - (set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-4 regs) GIF_REGS_ALL_AD) - (set! (-> v1-6 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((v1-7 arg0) - (a0-6 (-> v1-7 base)) - ) - (set! (-> (the-as (pointer int64) a0-6) 0) 0) - (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 texflush)) - (set! (-> v1-7 base) (&+ a0-6 16)) - ) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ (-> s4-0 0) 16) (the-as uint s4-0))) 0 16 16 (gs-psm ct32)) + (dma-buffer-add-gs-set arg0 (texflush 0)) (let ((v1-10 (+ (* (the int (-> obj scroll y)) 512) (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-10 16) (the-as int s4-0))) 8 512 208 19) - ) - (let* ((v1-13 arg0) - (a0-10 (the-as dma-packet (-> v1-13 base))) - ) - (set! (-> a0-10 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-10 vif0) (new 'static 'vif-tag)) - (set! (-> a0-10 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (the-as pointer (&+ a0-10 16))) - ) - (let* ((v1-14 arg0) - (a0-12 (the-as gs-gif-tag (-> v1-14 base))) - ) - (set! (-> a0-12 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-12 regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (the-as pointer (&+ a0-12 16))) - ) - (let* ((v1-15 arg0) - (a0-14 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-tex0) a0-14) 0) - (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a0-14) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a0-14) 2) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-14) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer int64) a0-14) 4) 1) - (set! (-> (the-as (pointer gs-reg64) a0-14) 5) (gs-reg64 texflush)) - (set! (-> v1-15 base) (&+ a0-14 48)) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-10 16) (the-as int s4-0))) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1)) + (tex1-1 (new 'static 'gs-tex1)) + (texflush 1) + ) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2)) (let ((v1-21 (+ (* (+ (the int (-> obj scroll y)) 208) 512) (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-21 16) (the-as int s4-0))) 8 512 208 19) + (bigmap-method-22 obj arg0 (the-as (pointer uint32) (+ (+ v1-21 16) (the-as int s4-0))) 8 512 208 (gs-psm mt8)) ) ) - (let* ((v1-24 arg0) - (a0-19 (the-as dma-packet (-> v1-24 base))) - ) - (set! (-> a0-19 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-19 vif0) (new 'static 'vif-tag)) - (set! (-> a0-19 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-24 base) (the-as pointer (&+ a0-19 16))) - ) - (let* ((v1-25 arg0) - (a0-21 (the-as gs-gif-tag (-> v1-25 base))) - ) - (set! (-> a0-21 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-21 regs) GIF_REGS_ALL_AD) - (set! (-> v1-25 base) (the-as pointer (&+ a0-21 16))) - ) - (let* ((v1-26 arg0) - (a0-23 (-> v1-26 base)) - ) - (set! (-> (the-as (pointer int64) a0-23) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-23) 1) (gs-reg64 texflush)) - (set! (-> v1-26 base) (&+ a0-23 16)) - ) + (dma-buffer-add-gs-set arg0 (texflush 1)) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1)) (none) ) @@ -781,34 +583,11 @@ (with-dma-buffer-add-bucket ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf)) (bucket-id tex-all-map) ) - (let ((v1-27 s4-1)) - (let ((a0-5 (the-as dma-packet (-> v1-27 base)))) - (set! (-> a0-5 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-5 vif0) (new 'static 'vif-tag)) - (set! (-> a0-5 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-27 base) (the-as pointer (&+ a0-5 16))) - ) - ) - (let ((v1-28 s4-1)) - (let ((a0-7 (the-as gs-gif-tag (-> v1-28 base)))) - (set! (-> a0-7 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-7 regs) GIF_REGS_ALL_AD) - (set! (-> v1-28 base) (the-as pointer (&+ a0-7 16))) - ) - ) - (let ((v1-29 s4-1)) - (let ((a0-9 (-> v1-29 base))) - (set! (-> (the-as (pointer gs-test) a0-9) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-9) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer int64) a0-9) 2) 68) - (set! (-> (the-as (pointer gs-reg64) a0-9) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer int64) a0-9) 4) 5) - (set! (-> (the-as (pointer gs-reg64) a0-9) 5) (gs-reg64 clamp-1)) - (set! (-> v1-29 base) (&+ a0-9 48)) - ) - ) + (dma-buffer-add-gs-set s4-1 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + ) (if (= (-> obj bigmap-index) 20) (bigmap-method-25 obj s4-1) (bigmap-method-24 obj s4-1) diff --git a/goal_src/jak2/engine/ui/minimap.gc b/goal_src/jak2/engine/ui/minimap.gc index 97df702109..f2be73e9ca 100644 --- a/goal_src/jak2/engine/ui/minimap.gc +++ b/goal_src/jak2/engine/ui/minimap.gc @@ -1905,34 +1905,11 @@ ) ) (&+! (-> s5-0 base) 112) - (let* ((v1-8 s5-0) - (a0-4 (the-as dma-packet (-> v1-8 base))) - ) - (set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-4 vif0) (new 'static 'vif-tag)) - (set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-8 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((v1-9 s5-0) - (a0-6 (the-as gs-gif-tag (-> v1-9 base))) - ) - (set! (-> a0-6 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-6 regs) GIF_REGS_ALL_AD) - (set! (-> v1-9 base) (the-as pointer (&+ a0-6 16))) - ) - (let* ((v1-10 s5-0) - (a0-8 (-> v1-10 base)) - ) - (set! (-> (the-as (pointer gs-clamp) a0-8) 0) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-test) a0-8) 2) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) a0-8) 4) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 5) (gs-reg64 texa)) - (set! (-> v1-10 base) (&+ a0-8 48)) - ) + (dma-buffer-add-gs-set s5-0 + (clamp-1 (new 'static 'gs-clamp)) + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta1 #x80)) + ) (let ((s3-1 (the-as object (-> s5-0 base)))) ;; PC PORT note : this fixes minimap stretching at non-4x3 aspeect ratio (let ((f30-0 (#if PC_PORT 1.0 (-> *video-params* relative-x-scale)))) @@ -1999,28 +1976,7 @@ ) (seek! (-> obj frustum-alpha) f0-57 (-> pp clock seconds-per-frame)) ) - (let* ((v1-55 s5-0) - (a0-44 (the-as dma-packet (-> v1-55 base))) - ) - (set! (-> a0-44 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-44 vif0) (new 'static 'vif-tag)) - (set! (-> a0-44 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-55 base) (the-as pointer (&+ a0-44 16))) - ) - (let* ((v1-56 s5-0) - (a0-46 (the-as gs-gif-tag (-> v1-56 base))) - ) - (set! (-> a0-46 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-46 regs) GIF_REGS_ALL_AD) - (set! (-> v1-56 base) (the-as pointer (&+ a0-46 16))) - ) - (let* ((v1-57 s5-0) - (a0-48 (-> v1-57 base)) - ) - (set! (-> (the-as (pointer gs-xy-offset) a0-48) 0) (new 'static 'gs-xy-offset :ofx #x640 :ofy #x640)) - (set! (-> (the-as (pointer gs-reg64) a0-48) 1) (gs-reg64 xyoffset-1)) - (set! (-> v1-57 base) (&+ a0-48 16)) - ) + (dma-buffer-add-gs-set s5-0 (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x640 :ofy #x640))) (when (!= (-> obj frustum-alpha) 0.0) (let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list-override)))) (while s3-2 @@ -2076,34 +2032,11 @@ (set! s3-6 (-> s3-6 next)) ) ) - (let* ((v1-105 s5-0) - (a0-60 (the-as dma-packet (-> v1-105 base))) - ) - (set! (-> a0-60 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-60 vif0) (new 'static 'vif-tag)) - (set! (-> a0-60 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-105 base) (the-as pointer (&+ a0-60 16))) - ) - (let* ((v1-106 s5-0) - (a0-62 (the-as gs-gif-tag (-> v1-106 base))) - ) - (set! (-> a0-62 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-62 regs) GIF_REGS_ALL_AD) - (set! (-> v1-106 base) (the-as pointer (&+ a0-62 16))) - ) - (let* ((v1-107 s5-0) - (a0-64 (-> v1-107 base)) - ) - (set! (-> (the-as (pointer gs-frame) a0-64) 0) - (new 'static 'gs-frame :fbw #x2 :fbmsk #xffffff :fbp (-> *map-texture-base* vram-page)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-64) 1) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-alpha) a0-64) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-64) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-xy-offset) a0-64) 4) (new 'static 'gs-xy-offset)) - (set! (-> (the-as (pointer gs-reg64) a0-64) 5) (gs-reg64 xyoffset-1)) - (set! (-> v1-107 base) (&+ a0-64 48)) - ) + (dma-buffer-add-gs-set s5-0 + (frame-1 (new 'static 'gs-frame :fbw #x2 :fbmsk #xffffff :fbp (-> *map-texture-base* vram-page))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (xyoffset-1 (new 'static 'gs-xy-offset)) + ) (let ((s3-7 (the-as object (-> s5-0 base)))) (set! (-> (the-as (pointer uint128) s3-7)) (-> obj adgif-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) s3-7) 1) (-> obj adgif-tmpl quad 1)) @@ -2131,48 +2064,21 @@ (local-vars (a3-4 int) (t0-4 int) (sv-48 vector) (sv-52 matrix) (sv-56 vector)) (let ((s5-0 (-> arg0 buf))) (reset-display-gs-state *display* s5-0) - (let* ((v1-0 s5-0) - (a0-2 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> a0-2 vif0) (new 'static 'vif-tag)) - (set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a0-2 16))) - ) - (let* ((v1-1 s5-0) - (a0-4 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> a0-4 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((s3-0 s5-0) - (s2-0 (-> s3-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s2-0) 0) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) - (set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s2-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s2-0) 4) - (new 'static 'gs-tex0 - :tbw #x2 - :tcc #x1 - :th (log2 128) - :tw (log2 128) - :tbp0 (-> *map-texture-base* vram-block) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s2-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s2-0) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s2-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 11) (gs-reg64 texflush)) - (set! (-> s3-0 base) (&+ s2-0 96)) - ) + (dma-buffer-add-gs-set s5-0 + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x2 + :tcc #x1 + :th (log2 128) + :tw (log2 128) + :tbp0 (-> *map-texture-base* vram-block) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((f30-0 (-> *video-params* relative-x-scale))) (let ((v1-20 (the-as object (-> s5-0 base))) (t0-0 (the int (* 112.0 f30-0))) @@ -2220,30 +2126,9 @@ ) ) (&+! (-> s5-0 base) 112) - (let* ((v1-25 s5-0) - (a0-20 (the-as dma-packet (-> v1-25 base))) - ) - (set! (-> a0-20 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-20 vif0) (new 'static 'vif-tag)) - (set! (-> a0-20 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-25 base) (the-as pointer (&+ a0-20 16))) - ) - (let* ((v1-26 s5-0) - (a0-22 (the-as gs-gif-tag (-> v1-26 base))) - ) - (set! (-> a0-22 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-22 regs) GIF_REGS_ALL_AD) - (set! (-> v1-26 base) (the-as pointer (&+ a0-22 16))) - ) - (let* ((v1-27 s5-0) - (a0-24 (-> v1-27 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-24) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest greater) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-24) 1) (gs-reg64 test-1)) - (set! (-> v1-27 base) (&+ a0-24 16)) - ) + (dma-buffer-add-gs-set s5-0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest greater) :zte #x1 :ztst (gs-ztest always))) + ) (set! sv-48 (new-stack-vector0)) (let ((v1-29 (new 'stack-no-clear 'matrix))) (set! (-> v1-29 quad 0) (the-as uint128 0)) diff --git a/goal_src/jak2/engine/ui/progress/progress.gc b/goal_src/jak2/engine/ui/progress/progress.gc index 3f41d3afac..499135126b 100644 --- a/goal_src/jak2/engine/ui/progress/progress.gc +++ b/goal_src/jak2/engine/ui/progress/progress.gc @@ -459,7 +459,7 @@ (cond (*progress-process* (deactivate (-> *progress-process* 0)) - (set! (-> *blit-displays-work* menu-mode) (the-as basic #t)) + (set! (-> *blit-displays-work* menu-mode) #t) (set! *progress-process* (process-spawn progress arg1 :to arg0 :stack (&-> *progress-stack* DPROCESS_STACK_SIZE))) (set-master-mode 'progress) ) @@ -1412,7 +1412,7 @@ ) ) (when (hud-hidden?) - (set! (-> *blit-displays-work* menu-mode) (the-as basic #t)) + (set! (-> *blit-displays-work* menu-mode) #t) (set! (-> self pos-transition) (seek-ease (-> self pos-transition) f30-0 diff --git a/goal_src/jak2/engine/util/capture.gc b/goal_src/jak2/engine/util/capture.gc index 68dd0ba92f..5b34d9c343 100644 --- a/goal_src/jak2/engine/util/capture.gc +++ b/goal_src/jak2/engine/util/capture.gc @@ -7,17 +7,16 @@ ;; DECOMP BEGINS +;; this file is debug only (declare-file (debug)) - - -(defun gs-set-default-store-image ((arg0 gs-store-image-packet) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int)) +(defun gs-set-default-store-image ((arg0 gs-store-image-packet) (arg1 int) (arg2 int) (arg3 gs-psm) (arg4 int) (arg5 int) (arg6 int) (arg7 int)) (set! (-> arg0 vifcode 0) (new 'static 'vif-tag)) (set! (-> arg0 vifcode 1) (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd mskpath3))) (set! (-> arg0 vifcode 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> arg0 vifcode 3) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) (set! (-> arg0 giftag) (new 'static 'gif-tag :nloop #x5 :eop #x1 :nreg #x1 :regs0 (gif-reg-id a+d))) - (set! (-> arg0 bitbltbuf) (new 'static 'gs-bitbltbuf :sbp arg1 :sbw arg2 :spsm arg3)) + (set! (-> arg0 bitbltbuf) (new 'static 'gs-bitbltbuf :sbp arg1 :sbw arg2 :spsm (the-as int arg3))) (set! (-> arg0 bitbltbuf-addr) (gs-reg64 bitbltbuf)) (set! (-> arg0 trxpos) (new 'static 'gs-trxpos :ssax arg4 :ssay arg5)) (set! (-> arg0 trxpos-addr) (gs-reg64 trxpos)) @@ -45,7 +44,7 @@ (let ((s4-0 (new 'stack 'file-stream *image-name* 'write))) (let ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf data))) (let ((s2-0 (new 'static 'gs-store-image-packet))) - (gs-set-default-store-image s2-0 #x3300 (/ gp-0 64) 0 0 0 gp-0 s5-0) + (gs-set-default-store-image s2-0 #x3300 (/ gp-0 64) (gs-psm ct32) 0 0 gp-0 s5-0) (flush-cache 0) (gs-store-image s2-0 s3-0) ) @@ -57,6 +56,3 @@ ) 0 ) - - - diff --git a/goal_src/jak2/engine/util/profile.gc b/goal_src/jak2/engine/util/profile.gc index cda064aca8..fd78c95f4a 100644 --- a/goal_src/jak2/engine/util/profile.gc +++ b/goal_src/jak2/engine/util/profile.gc @@ -553,46 +553,17 @@ (defmethod draw-bars! profile-array ((obj profile-array) (arg0 dma-buffer) (arg1 int)) "Draw the two bars at the top." (local-vars (sv-16 (function _varargs_ object)) (sv-32 (function _varargs_ object))) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-zbuf) a0-5) 2) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-5) 4) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 test-1)) - (set! (-> (the-as (pointer uint64) a0-5) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 pabe)) - (set! (-> (the-as (pointer gs-clamp) a0-5) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-tex1) a0-5) 10) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 11) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) a0-5) 12) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 13) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-texclut) a0-5) 14) (new 'static 'gs-texclut :cbw #x4)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 15) (gs-reg64 texclut)) - (set! (-> (the-as (pointer uint64) a0-5) 16) (the-as uint *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 17) (gs-reg64 fogcol)) - (set! (-> v1-2 base) (&+ a0-5 144)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) (let ((v1-5 (* (+ *profile-x* (/ *profile-w* 2)) 16)) (a0-9 (-> arg0 base)) ) diff --git a/goal_src/jak2/levels/intro/vortex.gc b/goal_src/jak2/levels/intro/vortex.gc index 76471df5f2..5083c37940 100644 --- a/goal_src/jak2/levels/intro/vortex.gc +++ b/goal_src/jak2/levels/intro/vortex.gc @@ -37,34 +37,11 @@ (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf)) (bucket-id sky-draw) ) - (let ((v1-17 s4-0)) - (let ((a0-6 (the-as dma-packet (-> v1-17 base)))) - (set! (-> a0-6 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-6 vif0) (new 'static 'vif-tag)) - (set! (-> a0-6 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-17 base) (the-as pointer (&+ a0-6 16))) - ) - ) - (let ((v1-18 s4-0)) - (let ((a0-8 (the-as gs-gif-tag (-> v1-18 base)))) - (set! (-> a0-8 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-8 regs) GIF_REGS_ALL_AD) - (set! (-> v1-18 base) (the-as pointer (&+ a0-8 16))) - ) - ) - (let ((v1-19 s4-0)) - (let ((a0-10 (-> v1-19 base))) - (set! (-> (the-as (pointer gs-zbuf) a0-10) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-10) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-rgbaq) a0-10) 4) (new 'static 'gs-rgbaq :b #x40 :q 1.0)) - (set! (-> (the-as (pointer gs-reg64) a0-10) 5) (gs-reg64 rgbaq)) - (set! (-> v1-19 base) (&+ a0-10 48)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (rgbaq (new 'static 'gs-rgbaq :b #x40 :q 1.0)) + ) (let ((v1-20 (-> s4-0 base))) (set! (-> (the-as (pointer uint128) v1-20)) (-> *sky-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-20) 1) (-> *sky-work* sprite-tmpl quad 1)) @@ -75,46 +52,24 @@ (set-vector! (the-as vector4w (&+ v1-23 16)) #x9000 #x8d00 0 0) ) (&+! (-> s4-0 base) 32) - (let ((v1-27 s4-0)) - (let ((a0-19 (the-as dma-packet (-> v1-27 base)))) - (set! (-> a0-19 dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) - (set! (-> a0-19 vif0) (new 'static 'vif-tag)) - (set! (-> a0-19 vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-27 base) (the-as pointer (&+ a0-19 16))) - ) - ) - (let ((v1-28 s4-0)) - (let ((a0-21 (the-as gs-gif-tag (-> v1-28 base)))) - (set! (-> a0-21 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5)) - (set! (-> a0-21 regs) GIF_REGS_ALL_AD) - (set! (-> v1-28 base) (the-as pointer (&+ a0-21 16))) - ) - ) - (let ((s3-0 s4-0)) - (let ((s2-0 (-> s3-0 base))) - (set! (-> (the-as (pointer gs-tex0) s2-0) 0) (new 'static 'gs-tex0 - :tbp0 #x100 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x300 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s2-0) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s2-0) 4) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s2-0) 6) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) s2-0) 8) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 texflush)) - (set! (-> s3-0 base) (&+ s2-0 80)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (tex0-1 + (new 'static 'gs-tex0 + :tbp0 #x100 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x300 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) (init-vortex-regs) ;;(.lvf vf27 (&-> *vortex-work* giftag quad)) (set-sky-vf27 (&-> *vortex-work* giftag quad)) @@ -134,30 +89,10 @@ (set! (-> s3-1 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-54)) ) ) - (let ((v1-58 s4-0)) - (let ((a0-32 (the-as dma-packet (-> v1-58 base)))) - (set! (-> a0-32 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> a0-32 vif0) (new 'static 'vif-tag)) - (set! (-> a0-32 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-58 base) (the-as pointer (&+ a0-32 16))) - ) - ) - (let ((v1-59 s4-0)) - (let ((a0-34 (the-as gs-gif-tag (-> v1-59 base)))) - (set! (-> a0-34 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> a0-34 regs) GIF_REGS_ALL_AD) - (set! (-> v1-59 base) (the-as pointer (&+ a0-34 16))) - ) - ) - (let ((v1-60 s4-0)) - (let ((a0-36 (-> v1-60 base))) - (set! (-> (the-as (pointer gs-alpha) a0-36) 0) (new 'static 'gs-alpha :b #x2 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) a0-36) 2) (the-as uint 1)) - (set! (-> (the-as (pointer gs-reg64) a0-36) 3) (gs-reg64 colclamp)) - (set! (-> v1-60 base) (&+ a0-36 32)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1)) + (colclamp (new 'static 'gs-color-clamp :clamp #x1)) + ) (set-tex-offset (the-as int (-> *vortex-work* off-s-1)) (the-as int (-> *vortex-work* off-t-1))) (let ((s3-2 (the-as dma-packet (-> s4-0 base)))) (&+! (-> s4-0 base) 16) diff --git a/goal_src/jak2/pc/debug/default-menu-pc.gc b/goal_src/jak2/pc/debug/default-menu-pc.gc index 21708f22fc..0dac97e0d8 100644 --- a/goal_src/jak2/pc/debug/default-menu-pc.gc +++ b/goal_src/jak2/pc/debug/default-menu-pc.gc @@ -767,10 +767,8 @@ (function "2560 x 1440" #f ,(lambda () (set-size! *pc-settings* 2560 1440))) (function "2880 x 2160" #f ,(lambda () (set-size! *pc-settings* 2880 2160))) (function "3840 x 2160" #f ,(lambda () (set-size! *pc-settings* 3840 2160))) - (function "512 x 224" #f ,(lambda () (set-size! *pc-settings* 512 224))) - (function "512 x 256" #f ,(lambda () (set-size! *pc-settings* 512 256))) - (function "512 x 448" #f ,(lambda () (set-size! *pc-settings* 512 448))) - (function "512 x 512" #f ,(lambda () (set-size! *pc-settings* 512 512))) + (function "512 x 416" #f ,(lambda () (set-size! *pc-settings* 512 416))) + (function "512 x 208" #f ,(lambda () (set-size! *pc-settings* 512 208))) ) (flag "Letterbox" #f ,(dm-lambda-boolean-flag (-> *pc-settings* letterbox?))) (flag "Hinttitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* hinttitles?))) diff --git a/test/decompiler/reference/jak1/decompiler-macros.gc b/test/decompiler/reference/jak1/decompiler-macros.gc index 5033a19f68..46578d38d4 100644 --- a/test/decompiler/reference/jak1/decompiler-macros.gc +++ b/test/decompiler/reference/jak1/decompiler-macros.gc @@ -1364,8 +1364,208 @@ ) ) +(defmacro gs-reg-list (&rest reg-ids) + "Generate a giftag register descriptor list from reg-ids." + + (let ((reg-count (length reg-ids))) + (when (> (length reg-ids) 16) + (ferror "too many regs passed to gs-reg-list") + ) + (let ((list-to-splice '()) + (cur-lst reg-ids) + (i -1)) + + ;; this is questionable. + (while (and (not (null? cur-lst)) (< i 15)) + (push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '()))) + (push! list-to-splice (string->symbol-format ":regs{}" (inc! i))) + (pop! cur-lst) + ) + + `(new 'static 'gif-tag-regs + ,@list-to-splice + ) + ) + #| ;; the opengoal compiler does not have enough constant propagation for this for now + (let ((i -1)) + + `(the-as gif-tag-regs (logior ,@(apply (lambda (x) + `(shl (the-as uint (gif-reg-id ,x)) ,(* 4 (inc! i))) + ) reg-ids) + )) + + )|# + ) + ) + ;; dma-buffer +(defmacro dma-buffer-add-base-type (buf pkt dma-type &rest body) + "Base macro for adding stuff to a dma-buffer. Don't use this directly!" + + (with-gensyms (dma-buf) + `(let* ((,dma-buf ,buf) + (,pkt (the-as ,dma-type (-> ,dma-buf base)))) + + ,@body + + (set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type))) + + ) + ) + ) + +(defmacro dma-buffer-add-base-data (buf data-type forms) + "Base macro for adding data words to a dma-buffer. + Each form in forms is converted into data-type and added to the buffer. NO TYPE CHECKING is performed, so be careful!" + + (with-gensyms (dma-buf ptr) + `(let* ((,dma-buf ,buf) + (,ptr (the-as (pointer ,data-type) (-> ,dma-buf base)))) + + ,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms) + + (set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type)))) + + ) + ) + ) + + +(defmacro dma-buffer-add-cnt-vif2 (buf qwc vif0 vif1) + "Add a dma-packet to a dma-buffer. + The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data after the tag and continue from after that point) + and includes two vif-tags for vifcode, or something else if needed." + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt dma-packet + + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc)) + + (set! (-> ,pkt vif0) ,vif0) + (set! (-> ,pkt vif1) ,vif1) + + ) + ) + ) + +(defmacro dma-buffer-add-ref-vif2 (buf qwc addr vif0 vif1) + "Add a dma-packet to a dma-buffer. + The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data at addr and continue from after the tag) + and includes two vif-tags for vifcode, or something else if needed." + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt dma-packet + + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr))) + + (set! (-> ,pkt vif0) ,vif0) + (set! (-> ,pkt vif1) ,vif1) + + ) + ) + ) + +(defmacro dma-buffer-add-ret (buf) + "Add a dma-packet to a dma-buffer. This packet simply does a DMA 'return' " + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt dma-packet + + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0)) + + (set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop))) + (set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop))) + + ) + ) + ) + +(defmacro dma-buffer-add-gif-tag (buf giftag gifregs) + "Add a giftag to a dma-buffer." + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag + + (set! (-> ,pkt tag) ,giftag) + + (set! (-> ,pkt regs) ,gifregs) + + ) + ) + ) + +(defmacro dma-buffer-add-uint64 (buf &rest body) + "Add 64-bit words to a dma-buffer. See dma-buffer-add-base-data" + + `(dma-buffer-add-base-data ,buf uint64 ,body) + ) + +(defmacro dma-buffer-add-uint128 (buf &rest body) + "Add 128-bit words to a dma-buffer. See dma-buffer-add-base-data" + + `(dma-buffer-add-base-data ,buf uint128 ,body) + ) + +(defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list) + "Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once. + The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop. + reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register." + + (let ((reg-count (length reg-list)) + (qwc (+ (length reg-list) 1)) + (reg-names (apply first reg-list)) + (reg-datas (apply second reg-list)) + ) + `(begin + ;; dma tag + (dma-buffer-add-cnt-vif2 ,buf ,qwc + (new 'static 'vif-tag :cmd (vif-cmd flusha)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc) + ) + + ;; gif tag for editing gs regs + (dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) + (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d) + ) + + ;; gs regs + (dma-buffer-add-uint64 ,buf + ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names) + ) + ) + ) + ) + +(defmacro dma-buffer-add-gs-set (buf &rest reg-list) + "Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once. + reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register." + + (let ((reg-count (length reg-list)) + (qwc (+ (length reg-list) 1)) + (reg-names (apply first reg-list)) + (reg-datas (apply second reg-list)) + ) + `(begin + ;; dma tag + (dma-buffer-add-cnt-vif2 ,buf ,qwc + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc) + ) + + ;; gif tag for editing gs regs + (dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) + (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d) + ) + + ;; gs regs + (dma-buffer-add-uint64 ,buf + ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names) + ) + ) + ) + ) + (defmacro with-dma-bucket (bindings &rest body) "Start a new dma-bucket in body that will be finished at the end. The bindings are the dma-buffer, dma-bucket and bucket-id respectively." diff --git a/test/decompiler/reference/jak1/engine/gfx/tie/tie-near_REF.gc b/test/decompiler/reference/jak1/engine/gfx/tie/tie-near_REF.gc index a617f75fab..bf77e94e0a 100644 --- a/test/decompiler/reference/jak1/engine/gfx/tie/tie-near_REF.gc +++ b/test/decompiler/reference/jak1/engine/gfx/tie/tie-near_REF.gc @@ -129,19 +129,7 @@ ;; definition for function tie-near-init-engine ;; INFO: Return type mismatch int vs none. -;; WARN: Failed store: (s.w! (+ a0-2 8) a1-4) at op 19 -;; WARN: Failed store: (s.w! (+ a0-2 12) a1-6) at op 24 -;; WARN: Failed store: (s.w! (+ a0-6 8) a1-9) at op 40 -;; WARN: Failed store: (s.w! (+ a0-6 12) a1-10) at op 42 -;; WARN: Failed store: (s.w! (+ a0-8 8) 0) at op 49 -;; WARN: Failed store: (s.w! (+ a0-8 12) a1-12) at op 51 -;; WARN: Failed store: (s.w! (+ v1-7 4) a0-11) at op 58 -;; WARN: Failed store: (s.w! (+ v1-7 8) a0-12) at op 60 -;; WARN: Failed store: (s.w! (+ v1-7 12) a0-13) at op 62 -;; WARN: Failed store: (s.w! (+ v1-7 16) a0-14) at op 64 -;; WARN: Failed store: (s.w! (+ v1-7 20) a0-15) at op 66 -;; WARN: Failed store: (s.w! (+ v1-7 24) a0-16) at op 68 -;; WARN: Failed store: (s.w! (+ v1-7 28) a0-17) at op 70 +;; ERROR: Failed store: (s.w! (+ a0-2 8) a1-4) at op 19 (defun tie-near-init-engine ((arg0 dma-buffer) (arg1 gs-test) (arg2 int)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near)) (dma-buffer-add-vu-function arg0 tie-near-vu1-block 1) @@ -215,49 +203,18 @@ ;; definition for function tie-near-end-buffer ;; INFO: Return type mismatch int vs none. -;; WARN: Failed store: (s.w! (+ a1-0 8) 0) at op 7 -;; WARN: Failed store: (s.w! (+ a1-0 12) a2-1) at op 9 -;; WARN: Failed store: (s.d! (+ a1-2 8) a2-4) at op 18 -;; WARN: Failed store: (s.d! (+ a1-4 8) a2-6) at op 26 -;; WARN: Failed store: (s.w! (+ a1-6 8) a2-8) at op 34 -;; WARN: Failed store: (s.w! (+ a1-6 12) 0) at op 35 -;; WARN: Failed store: (s.w! (+ a0-1 4) a1-9) at op 43 -;; WARN: Failed store: (s.w! (+ a0-1 8) a1-10) at op 45 -;; WARN: Failed store: (s.w! (+ a0-1 12) a1-11) at op 47 -;; WARN: Failed store: (s.w! (+ a0-1 16) 0) at op 48 -;; WARN: Failed store: (s.w! (+ a0-1 20) 0) at op 49 -;; WARN: Failed store: (s.w! (+ a0-1 24) 0) at op 50 -;; WARN: Failed store: (s.w! (+ a0-1 28) 0) at op 51 +;; ERROR: Failed store: (s.w! (+ a1-0 8) 0) at op 7 (defun tie-near-end-buffer ((arg0 dma-buffer)) (when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near)) - (let* ((v1-2 arg0) - (a1-0 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer int64) a1-0)) #x10000002) - (s.w! (+ a1-0 8) 0) - (let ((a2-1 #x50000002)) - (s.w! (+ a1-0 12) a2-1) - ) - (set! (-> v1-2 base) (&+ a1-0 16)) - ) - (let* ((v1-3 arg0) - (a1-2 (-> v1-3 base)) - ) - (set! (-> (the-as (pointer uint64) a1-2)) (make-u128 0 (the-as uint #x1000000000008001))) - (let ((a2-4 (the-as uint #xeeeeeeeeeeeeeeee))) - (s.d! (+ a1-2 8) a2-4) - ) - (set! (-> v1-3 base) (&+ a1-2 16)) - ) - (let* ((v1-4 arg0) - (a1-4 (-> v1-4 base)) - ) - (set! (-> (the-as (pointer int64) a1-4)) #x5026b) - (let ((a2-6 71)) - (s.d! (+ a1-4 8) a2-6) - ) - (set! (-> v1-4 base) (&+ a1-4 16)) - ) + (dma-buffer-add-gs-set arg0 (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + ) (let* ((v1-5 arg0) (a1-6 (-> v1-5 base)) ) diff --git a/test/decompiler/reference/jak2/decompiler-macros.gc b/test/decompiler/reference/jak2/decompiler-macros.gc index 4b6771e270..99eccd5341 100644 --- a/test/decompiler/reference/jak2/decompiler-macros.gc +++ b/test/decompiler/reference/jak2/decompiler-macros.gc @@ -1284,6 +1284,206 @@ ) ) +(defmacro gs-reg-list (&rest reg-ids) + "Generate a giftag register descriptor list from reg-ids." + + (let ((reg-count (length reg-ids))) + (when (> (length reg-ids) 16) + (ferror "too many regs passed to gs-reg-list") + ) + (let ((list-to-splice '()) + (cur-lst reg-ids) + (i -1)) + + ;; this is questionable. + (while (and (not (null? cur-lst)) (< i 15)) + (push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '()))) + (push! list-to-splice (string->symbol-format ":regs{}" (inc! i))) + (pop! cur-lst) + ) + + `(new 'static 'gif-tag-regs + ,@list-to-splice + ) + ) + #| ;; the opengoal compiler does not have enough constant propagation for this for now + (let ((i -1)) + + `(the-as gif-tag-regs (logior ,@(apply (lambda (x) + `(shl (the-as uint (gif-reg-id ,x)) ,(* 4 (inc! i))) + ) reg-ids) + )) + + )|# + ) + ) + +(defmacro dma-buffer-add-base-type (buf pkt dma-type &rest body) + "Base macro for adding stuff to a dma-buffer. Don't use this directly!" + + (with-gensyms (dma-buf) + `(let* ((,dma-buf ,buf) + (,pkt (the-as ,dma-type (-> ,dma-buf base)))) + + ,@body + + (set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type))) + + ) + ) + ) + +(defmacro dma-buffer-add-base-data (buf data-type forms) + "Base macro for adding data words to a dma-buffer. + Each form in forms is converted into data-type and added to the buffer. NO TYPE CHECKING is performed, so be careful!" + + (with-gensyms (dma-buf ptr) + `(let* ((,dma-buf ,buf) + (,ptr (the-as (pointer ,data-type) (-> ,dma-buf base)))) + + ,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms) + + (set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type)))) + + ) + ) + ) + + +(defmacro dma-buffer-add-cnt-vif2 (buf qwc vif0 vif1) + "Add a dma-packet to a dma-buffer. + The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data after the tag and continue from after that point) + and includes two vif-tags for vifcode, or something else if needed." + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt dma-packet + + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc)) + + (set! (-> ,pkt vif0) ,vif0) + (set! (-> ,pkt vif1) ,vif1) + + ) + ) + ) + +(defmacro dma-buffer-add-ref-vif2 (buf qwc addr vif0 vif1) + "Add a dma-packet to a dma-buffer. + The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data at addr and continue from after the tag) + and includes two vif-tags for vifcode, or something else if needed." + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt dma-packet + + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr))) + + (set! (-> ,pkt vif0) ,vif0) + (set! (-> ,pkt vif1) ,vif1) + + ) + ) + ) + +(defmacro dma-buffer-add-ret (buf) + "Add a dma-packet to a dma-buffer. This packet simply does a DMA 'return' " + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt dma-packet + + (set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0)) + + (set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop))) + (set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop))) + + ) + ) + ) + +(defmacro dma-buffer-add-gif-tag (buf giftag gifregs) + "Add a giftag to a dma-buffer." + + (with-gensyms (pkt) + `(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag + + (set! (-> ,pkt tag) ,giftag) + + (set! (-> ,pkt regs) ,gifregs) + + ) + ) + ) + +(defmacro dma-buffer-add-uint64 (buf &rest body) + "Add 64-bit words to a dma-buffer. See dma-buffer-add-base-data" + + `(dma-buffer-add-base-data ,buf uint64 ,body) + ) + +(defmacro dma-buffer-add-uint128 (buf &rest body) + "Add 128-bit words to a dma-buffer. See dma-buffer-add-base-data" + + `(dma-buffer-add-base-data ,buf uint128 ,body) + ) + +(defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list) + "Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once. + The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop. + reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register." + + (let ((reg-count (length reg-list)) + (qwc (+ (length reg-list) 1)) + (reg-names (apply first reg-list)) + (reg-datas (apply second reg-list)) + ) + `(begin + ;; dma tag + (dma-buffer-add-cnt-vif2 ,buf ,qwc + (new 'static 'vif-tag :cmd (vif-cmd flusha)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc) + ) + + ;; gif tag for editing gs regs + (dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) + (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d) + ) + + ;; gs regs + (dma-buffer-add-uint64 ,buf + ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names) + ) + ) + ) + ) + +(defmacro dma-buffer-add-gs-set (buf &rest reg-list) + "Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once. + reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register." + + (let ((reg-count (length reg-list)) + (qwc (+ (length reg-list) 1)) + (reg-names (apply first reg-list)) + (reg-datas (apply second reg-list)) + ) + `(begin + ;; dma tag + (dma-buffer-add-cnt-vif2 ,buf ,qwc + (new 'static 'vif-tag :cmd (vif-cmd nop)) + (new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc) + ) + + ;; gif tag for editing gs regs + (dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count) + (gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d) + ) + + ;; gs regs + (dma-buffer-add-uint64 ,buf + ,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names) + ) + ) + ) + ) + (defmacro with-dma-bucket (bindings &rest body) "Start a new dma-bucket in body that will be finished at the end. The bindings are the dma-buffer, dma-bucket and bucket-id respectively." diff --git a/test/decompiler/reference/jak2/engine/debug/debug_REF.gc b/test/decompiler/reference/jak2/engine/debug/debug_REF.gc index d62277d06d..4623df9f26 100644 --- a/test/decompiler/reference/jak2/engine/debug/debug_REF.gc +++ b/test/decompiler/reference/jak2/engine/debug/debug_REF.gc @@ -664,68 +664,68 @@ (with-dma-buffer-add-bucket ((buf (-> *display* frames (-> *display* on-screen) debug-buf)) bucket ) - (let ((p0 (new 'stack 'vector4w))) - (let ((p1 (new 'stack 'vector4w))) - (set! (-> p0 quad) (-> start quad)) - (set! (-> p1 quad) (-> end quad)) - (set! (-> p0 x) (* (+ (-> p0 x) 2048) 16)) - (set! (-> p0 y) (* -16 (- 2048 (-> p0 y)))) - (set! (-> p0 z) #x7fffff) - (set! (-> p1 x) (* (+ (-> p1 x) 2048) 16)) - (set! (-> p1 y) (* -16 (- 2048 (-> p1 y)))) - (set! (-> p1 z) #x7fffff) - (let ((a0-18 (the-as (pointer uint64) (-> buf base)))) - (let* ((a1-7 buf) - (a2-3 (the-as dma-packet (-> a1-7 base))) - ) - (set! (-> a2-3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> a2-3 vif0) (new 'static 'vif-tag)) - (set! (-> a2-3 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-7 base) (&+ (the-as pointer a2-3) 16)) - ) - (let* ((a1-8 buf) - (giftag (the-as gs-gif-tag (-> a1-8 base))) - ) - (set! (-> giftag tag) (new 'static 'gif-tag64 - :nloop #x1 - :eop #x1 - :pre #x1 - :prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) - :nreg #x4 - ) - ) - (set! (-> giftag regs) (new 'static 'gif-tag-regs - :regs0 (gif-reg-id rgbaq) - :regs1 (gif-reg-id xyzf2) - :regs2 (gif-reg-id rgbaq) - :regs3 (gif-reg-id xyzf2) - ) - ) - (set! (-> a1-8 base) (&+ (the-as pointer giftag) 16)) - ) - (let* ((a1-9 buf) - (v0 (the-as vector4w-2 (-> a1-9 base))) - ) - (set! (-> v0 vector 0 quad) (-> color quad)) - (set! (-> v0 vector 1 quad) (-> p0 quad)) - (set! (-> a1-9 base) (&+ (the-as pointer v0) 32)) - ) - (let* ((a1-10 buf) - (v1 (the-as vector4w-2 (-> a1-10 base))) - ) - (set! (-> v1 vector 0 quad) (-> color quad)) - (set! (-> v1 vector 1 quad) (-> p1 quad)) - (set! (-> a1-10 base) (&+ (the-as pointer v1) 32)) - ) - (let ((a1-14 (/ (the-as int (+ (- -16 (the-as int a0-18)) (the-as int (-> buf base)))) 16))) - (cond - ((nonzero? a1-14) - (logior! (-> a0-18 0) (shr (shl a1-14 48) 48)) - (logior! (-> a0-18 1) (shl (shr (shl a1-14 48) 48) 32)) + (let ((p0 (new 'stack 'vector4w)) + (p1 (new 'stack 'vector4w)) + ) + (set! (-> p0 quad) (-> start quad)) + (set! (-> p1 quad) (-> end quad)) + (set! (-> p0 x) (* (+ (-> p0 x) 2048) 16)) + (set! (-> p0 y) (* -16 (- 2048 (-> p0 y)))) + (set! (-> p0 z) #x7fffff) + (set! (-> p1 x) (* (+ (-> p1 x) 2048) 16)) + (set! (-> p1 y) (* -16 (- 2048 (-> p1 y)))) + (set! (-> p1 z) #x7fffff) + (let ((a0-18 (the-as (pointer uint64) (-> buf base)))) + (let* ((a1-7 buf) + (a2-3 (the-as dma-packet (-> a1-7 base))) ) - (else - (set! (-> buf base) a0-18) + (set! (-> a2-3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> a2-3 vif0) (new 'static 'vif-tag)) + (set! (-> a2-3 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) + (set! (-> a1-7 base) (&+ (the-as pointer a2-3) 16)) + ) + (let* ((a1-8 buf) + (giftag (the-as gs-gif-tag (-> a1-8 base))) + ) + (set! (-> giftag tag) (new 'static 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) + :nreg #x4 + ) ) + (set! (-> giftag regs) (new 'static 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id xyzf2) + :regs2 (gif-reg-id rgbaq) + :regs3 (gif-reg-id xyzf2) + ) + ) + (set! (-> a1-8 base) (&+ (the-as pointer giftag) 16)) + ) + (let* ((a1-9 buf) + (v0 (the-as vector4w-2 (-> a1-9 base))) + ) + (set! (-> v0 vector 0 quad) (-> color quad)) + (set! (-> v0 vector 1 quad) (-> p0 quad)) + (set! (-> a1-9 base) (&+ (the-as pointer v0) 32)) + ) + (let* ((a1-10 buf) + (v1 (the-as vector4w-2 (-> a1-10 base))) + ) + (set! (-> v1 vector 0 quad) (-> color quad)) + (set! (-> v1 vector 1 quad) (-> p1 quad)) + (set! (-> a1-10 base) (&+ (the-as pointer v1) 32)) + ) + (let ((a1-14 (/ (the-as int (+ (- -16 (the-as int a0-18)) (the-as int (-> buf base)))) 16))) + (cond + ((nonzero? a1-14) + (logior! (-> a0-18 0) (shr (shl a1-14 48) 48)) + (logior! (-> a0-18 1) (shl (shr (shl a1-14 48) 48) 32)) + ) + (else + (set! (-> buf base) a0-18) ) ) ) @@ -1894,7 +1894,7 @@ ;; definition (debug) for function add-debug-bound ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. -;; ERROR: Failed store: (s.w! (+ v1-29 8) 0) at op 110 +;; ERROR: Failed store: (s.w! (+ a0-3 8) 0) at op 36 ;; WARN: Function add-debug-bound has a return type of none, but the expression builder found a return statement. (defun-debug add-debug-bound ((buf bucket-id) (pts (inline-array vector)) (c0 int) (c1 rgba) (flash rgba) (arg5 int)) (local-vars (sv-16 pointer) (sv-32 int)) @@ -1914,39 +1914,18 @@ (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf)) buf ) - (let ((v1-16 s4-0)) - (let ((a0-3 (the-as dma-packet (-> v1-16 base)))) - (set! (-> a0-3 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-3 vif0) (new 'static 'vif-tag)) - (set! (-> a0-3 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-16 base) (the-as pointer (the-as dma-packet (&+ a0-3 16)))) - ) - ) - (let ((v1-17 s4-0)) - (let ((a0-5 (the-as gs-gif-tag (-> v1-17 base)))) - (set! (-> a0-5 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-5 regs) GIF_REGS_ALL_AD) - (set! (-> v1-17 base) (the-as pointer (the-as gs-gif-tag (&+ a0-5 16)))) - ) - ) - (let ((v1-18 s4-0)) - (let ((a0-7 (-> v1-18 base))) - (set! (-> (the-as (pointer gs-zbuf) a0-7) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a0-7) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-7) 2) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-7) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-7) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-7) 5) (gs-reg64 alpha-1)) - (set! (-> v1-18 base) (&+ a0-7 48)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) (set! sv-16 (-> s4-0 base)) (&+! (-> s4-0 base) 16) (add-boundary-shader (new 'static 'texture-id :index #x3 :page #x70c) s4-0) diff --git a/test/decompiler/reference/jak2/engine/draw/drawable_REF.gc b/test/decompiler/reference/jak2/engine/draw/drawable_REF.gc index 5f927d91cb..a52d2b4938 100644 --- a/test/decompiler/reference/jak2/engine/draw/drawable_REF.gc +++ b/test/decompiler/reference/jak2/engine/draw/drawable_REF.gc @@ -1717,52 +1717,24 @@ ;; definition for function default-init-buffer ;; WARN: Return type mismatch symbol vs none. +;; ERROR: Failed store: (s.w! (+ t1-0 8) t2-1) at op 24 (defun default-init-buffer ((arg0 bucket-id) (arg1 gs-zbuf) (arg2 gs-test)) (let ((v1-6 (-> *display* frames (-> *display* on-screen) bucket-group arg0))) (when (!= v1-6 (-> v1-6 last)) (let* ((a0-8 (-> *display* frames (-> *display* on-screen) global-buf)) (a3-3 (-> a0-8 base)) ) - (let* ((t0-0 a0-8) - (t1-0 (the-as dma-packet (-> t0-0 base))) - ) - (set! (-> t1-0 dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> t1-0 vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> t1-0 vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-0 base) (the-as pointer (&+ t1-0 16))) - ) - (let* ((t0-1 a0-8) - (t1-2 (the-as object (-> t0-1 base))) - ) - (set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag t1-2) regs) GIF_REGS_ALL_AD) - (set! (-> t0-1 base) (&+ (the-as pointer t1-2) 16)) - ) - (let* ((t0-2 a0-8) - (t1-4 (-> t0-2 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) t1-4) 0) arg1) - (set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) t1-4) 2) arg2) - (set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) t1-4) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 5) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) t1-4) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 7) (gs-reg64 pabe)) - (set! (-> (the-as (pointer gs-clamp) t1-4) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) t1-4) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-tex0) t1-4) 10) (new 'static 'gs-tex0 :tbp0 #x60)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 11) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) t1-4) 12) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 13) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-texclut) t1-4) 14) (new 'static 'gs-texclut :cbw #x4)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 15) (gs-reg64 texclut)) - (set! (-> (the-as (pointer uint64) t1-4) 16) (the-as uint *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 17) (gs-reg64 fogcol)) - (set! (-> t0-2 base) (&+ t1-4 144)) - ) + (dma-buffer-add-gs-set-flusha a0-8 + (zbuf-1 arg1) + (test-1 arg2) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) (let ((a1-18 (the-as object (-> a0-8 base)))) (set! (-> (the-as dma-packet a1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> v1-6 next))) (set! (-> (the-as dma-packet a1-18) vif0) (new 'static 'vif-tag)) @@ -1778,52 +1750,24 @@ ;; definition for function default-end-buffer ;; WARN: Return type mismatch symbol vs none. +;; ERROR: Failed store: (s.w! (+ t1-0 8) t2-1) at op 24 (defun default-end-buffer ((arg0 bucket-id) (arg1 gs-zbuf) (arg2 gs-test)) (let ((v1-6 (-> *display* frames (-> *display* on-screen) bucket-group arg0))) (when (!= v1-6 (-> v1-6 last)) (let* ((a3-2 (-> *display* frames (-> *display* on-screen) global-buf)) (a0-8 (-> a3-2 base)) ) - (let* ((t0-1 a3-2) - (t1-0 (the-as dma-packet (-> t0-1 base))) - ) - (set! (-> t1-0 dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> t1-0 vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> t1-0 vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-1 base) (the-as pointer (&+ t1-0 16))) - ) - (let* ((t0-2 a3-2) - (t1-2 (the-as object (-> t0-2 base))) - ) - (set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag t1-2) regs) GIF_REGS_ALL_AD) - (set! (-> t0-2 base) (&+ (the-as pointer t1-2) 16)) - ) - (let* ((t0-3 a3-2) - (t1-4 (-> t0-3 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) t1-4) 0) arg1) - (set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) t1-4) 2) arg2) - (set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) t1-4) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 5) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) t1-4) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 7) (gs-reg64 pabe)) - (set! (-> (the-as (pointer gs-clamp) t1-4) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) t1-4) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-tex0) t1-4) 10) (new 'static 'gs-tex0 :tbp0 #x60)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 11) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) t1-4) 12) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 13) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-texclut) t1-4) 14) (new 'static 'gs-texclut :cbw #x4)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 15) (gs-reg64 texclut)) - (set! (-> (the-as (pointer uint64) t1-4) 16) (the-as uint *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) t1-4) 17) (gs-reg64 fogcol)) - (set! (-> t0-3 base) (&+ t1-4 144)) - ) + (dma-buffer-add-gs-set-flusha a3-2 + (zbuf-1 arg1) + (test-1 arg2) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) (let ((t0-4 (-> a3-2 base))) (let ((a1-18 (the-as object (-> a3-2 base)))) (set! (-> (the-as dma-packet a1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next))) diff --git a/test/decompiler/reference/jak2/engine/game/main_REF.gc b/test/decompiler/reference/jak2/engine/game/main_REF.gc index 5a44b0d729..5ca0f94787 100644 --- a/test/decompiler/reference/jak2/engine/game/main_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/main_REF.gc @@ -261,7 +261,7 @@ ;; definition for method 9 of type screen-filter ;; WARN: Return type mismatch int vs none. -;; ERROR: Failed store: (s.w! (+ v1-16 8) 0) at op 85 +;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 28 (defmethod draw screen-filter ((obj screen-filter)) (local-vars (v1-1 float)) (rlet ((vf0 :class vf) @@ -288,30 +288,9 @@ (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf)) (-> obj bucket) ) - (let ((v1-7 s4-0)) - (let ((a0-2 (the-as object (-> v1-7 base)))) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-7 base) (&+ (the-as pointer a0-2) 16)) - ) - ) - (let ((v1-8 s4-0)) - (let ((a0-4 (the-as object (-> v1-8 base)))) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-8 base) (&+ (the-as pointer a0-4) 16)) - ) - ) - (let ((v1-9 s4-0)) - (let ((a0-6 (-> v1-9 base))) - (set! (-> (the-as (pointer gs-test) a0-6) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 test-1)) - (set! (-> v1-9 base) (&+ a0-6 16)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((t1-0 (new 'static 'rgba :r (the int (-> obj color x)) :g (the int (-> obj color y)) diff --git a/test/decompiler/reference/jak2/engine/game/settings_REF.gc b/test/decompiler/reference/jak2/engine/game/settings_REF.gc index eb3c5e8c04..91bcfd46a5 100644 --- a/test/decompiler/reference/jak2/engine/game/settings_REF.gc +++ b/test/decompiler/reference/jak2/engine/game/settings_REF.gc @@ -1229,7 +1229,7 @@ (set! (-> *video-params* display-dy) (* (/ (-> s4-0 display-dy) 2) 2)) ) (set! (-> *blit-displays-work* horizontal-flip-flag) - (the-as basic (logtest? (-> *game-info* secrets) (game-secrets hflip-screen))) + (logtest? (-> *game-info* secrets) (game-secrets hflip-screen)) ) (set! (-> s5-0 allow-blackout) (-> s4-0 allow-blackout)) (set! (-> s5-0 bg-a-speed) (-> s4-0 bg-a-speed)) diff --git a/test/decompiler/reference/jak2/engine/gfx/blit-displays-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/blit-displays-h_REF.gc index e29a3c5651..48308a5c96 100644 --- a/test/decompiler/reference/jak2/engine/gfx/blit-displays-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/blit-displays-h_REF.gc @@ -3,25 +3,25 @@ ;; definition of type blit-displays-work (deftype blit-displays-work (structure) - ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) - (sprite-tmpl dma-gif-packet :inline :offset-assert 32) - (sprite-slow-tmpl dma-gif-packet :inline :offset-assert 64) - (line-tmpl dma-gif-packet :inline :offset-assert 96) - (scan-tmpl dma-gif-packet :inline :offset-assert 128) - (color vector4w :inline :offset-assert 160) - (line-color uint64 :offset-assert 176) - (scan-colors vector4w 15 :inline :offset-assert 192) - (menu-mode basic :offset-assert 432) - (screen-copied basic :offset-assert 436) - (vu1-enable-user-menu uint64 :offset-assert 440) - (texture-enable-user-menu uint32 :offset-assert 448) - (count-down uint32 :offset-assert 452) - (horizontal-flip-flag basic :offset-assert 456) - (scan-alpha float :offset-assert 460) - (scanline uint32 :offset-assert 464) - (progress-interp float :offset-assert 468) - (progress-interp-dest float :offset-assert 472) - (progress-interp-speed float :offset-assert 476) + ((adgif-tmpl dma-gif-packet :inline :offset-assert 0) + (sprite-tmpl dma-gif-packet :inline :offset-assert 32) + (sprite-slow-tmpl dma-gif-packet :inline :offset-assert 64) + (line-tmpl dma-gif-packet :inline :offset-assert 96) + (scan-tmpl dma-gif-packet :inline :offset-assert 128) + (color vector4w :inline :offset-assert 160) + (line-color uint64 :offset-assert 176) + (scan-colors vector4w 15 :inline :offset-assert 192) + (menu-mode symbol :offset-assert 432) + (screen-copied symbol :offset-assert 436) + (vu1-enable-user-menu vu1-renderer-mask :offset-assert 440) + (texture-enable-user-menu uint32 :offset-assert 448) + (count-down uint32 :offset-assert 452) + (horizontal-flip-flag symbol :offset-assert 456) + (scan-alpha float :offset-assert 460) + (scanline uint32 :offset-assert 464) + (progress-interp float :offset-assert 468) + (progress-interp-dest float :offset-assert 472) + (progress-interp-speed float :offset-assert 476) ) :method-count-assert 9 :size-assert #x1e0 @@ -60,7 +60,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/jak2/engine/gfx/foreground/eye_REF.gc b/test/decompiler/reference/jak2/engine/gfx/foreground/eye_REF.gc index 30edb50ac9..03420728e4 100644 --- a/test/decompiler/reference/jak2/engine/gfx/foreground/eye_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/foreground/eye_REF.gc @@ -69,6 +69,7 @@ ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch +;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 79 (defun render-eyes-32 ((arg0 dma-buffer) (arg1 eye-control) (arg2 int)) (local-vars (sv-16 float)) (let ((s4-0 32) @@ -94,30 +95,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -131,30 +109,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-6 (* 256.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -171,30 +126,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-26) 6) a3-9 t1-0 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-30 arg0) - (a2-17 (the-as object (-> a1-30 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-30 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-31 arg0) - (a2-19 (the-as object (-> a1-31 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-31 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-32 arg0) - (a2-21 (-> a1-32 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-32 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-10 (* 256.0 (-> arg1 right iris-scale))) (a1-34 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -213,30 +147,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-32 arg0) - (a0-32 (the-as object (-> v1-32 base))) - ) - (set! (-> (the-as dma-packet a0-32) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-32) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-32) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-32 base) (&+ (the-as pointer a0-32) 16)) - ) - (let* ((v1-33 arg0) - (a0-34 (the-as object (-> v1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a0-34) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-34) regs) GIF_REGS_ALL_AD) - (set! (-> v1-33 base) (&+ (the-as pointer a0-34) 16)) - ) - (let* ((v1-34 arg0) - (a0-36 (-> v1-34 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-36) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 test-1)) - (set! (-> v1-34 base) (&+ a0-36 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-1 (-> arg1 shaders 1))) (let ((v1-36 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-36) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -254,30 +167,7 @@ (let ((v1-43 (ash 16 (-> s1-1 tex0 tw))) (a0-48 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-47 arg0) - (a2-27 (the-as object (-> a1-47 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-47 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-48 arg0) - (a2-29 (the-as object (-> a1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-48 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-49 arg0) - (a2-31 (-> a1-49 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-49 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-14 (* 256.0 (-> arg1 left pupil-scale))) (a1-51 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -294,30 +184,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-51) 6) a3-30 t1-3 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-55 arg0) - (a2-37 (the-as object (-> a1-55 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-55 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-56 arg0) - (a2-39 (the-as object (-> a1-56 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-56 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-57 arg0) - (a2-41 (-> a1-57 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-57 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-18 (* 256.0 (-> arg1 right pupil-scale))) (a1-59 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -337,30 +206,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-47 arg0) - (a0-50 (the-as object (-> v1-47 base))) - ) - (set! (-> (the-as dma-packet a0-50) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-50) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-50) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-47 base) (&+ (the-as pointer a0-50) 16)) - ) - (let* ((v1-48 arg0) - (a0-52 (the-as object (-> v1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a0-52) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-52) regs) GIF_REGS_ALL_AD) - (set! (-> v1-48 base) (&+ (the-as pointer a0-52) 16)) - ) - (let* ((v1-49 arg0) - (a0-54 (-> v1-49 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-54) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-54) 1) (gs-reg64 test-1)) - (set! (-> v1-49 base) (&+ a0-54 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 2))) (let ((v1-51 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-51) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -383,30 +231,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-76 arg0) - (a2-47 (the-as object (-> a1-76 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-76 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-77 arg0) - (a2-49 (the-as object (-> a1-77 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-77 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-78 arg0) - (a2-51 (-> a1-78 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-78 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 left lid)))) (a1-81 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -428,30 +253,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-89 arg0) - (a2-57 (the-as object (-> a1-89 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-89 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-90 arg0) - (a2-59 (the-as object (-> a1-90 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-90 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-91 arg0) - (a2-61 (-> a1-91 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-91 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 right lid)))) (a1-94 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 64) 16)) @@ -490,6 +294,7 @@ ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch +;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 79 (defun render-eyes-32-different ((arg0 dma-buffer) (arg1 eye-control) (arg2 int)) (local-vars (sv-16 float)) (let ((s4-0 32) @@ -515,30 +320,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -552,30 +334,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-6 (* 256.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -611,30 +370,9 @@ (let ((v1-40 (ash 16 (-> s1-1 tex0 tw))) (a0-42 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-32 arg0) - (a2-17 (the-as object (-> a1-32 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-32 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-33 arg0) - (a2-19 (the-as object (-> a1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-33 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-34 arg0) - (a2-21 (-> a1-34 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-34 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-10 (* 256.0 (-> arg1 right iris-scale))) (a1-36 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -653,30 +391,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-44 arg0) - (a0-44 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-44 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-45 arg0) - (a0-46 (the-as object (-> v1-45 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-45 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((v1-46 arg0) - (a0-48 (-> v1-46 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-48) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-48) 1) (gs-reg64 test-1)) - (set! (-> v1-46 base) (&+ a0-48 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 1))) (let ((v1-48 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-48) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -694,30 +411,7 @@ (let ((v1-55 (ash 16 (-> s1-2 tex0 tw))) (a0-60 (ash 16 (-> s1-2 tex0 th))) ) - (let* ((a1-49 arg0) - (a2-27 (the-as object (-> a1-49 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-49 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-50 arg0) - (a2-29 (the-as object (-> a1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-50 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-51 arg0) - (a2-31 (-> a1-51 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-51 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-14 (* 256.0 (-> arg1 left pupil-scale))) (a1-53 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -753,30 +447,9 @@ (let ((v1-67 (ash 16 (-> s1-3 tex0 tw))) (a0-72 (ash 16 (-> s1-3 tex0 th))) ) - (let* ((a1-59 arg0) - (a2-37 (the-as object (-> a1-59 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-59 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-60 arg0) - (a2-39 (the-as object (-> a1-60 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-60 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-61 arg0) - (a2-41 (-> a1-61 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-61 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-18 (* 256.0 (-> arg1 right pupil-scale))) (a1-63 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -796,30 +469,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-71 arg0) - (a0-74 (the-as object (-> v1-71 base))) - ) - (set! (-> (the-as dma-packet a0-74) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-74) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-74) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-71 base) (&+ (the-as pointer a0-74) 16)) - ) - (let* ((v1-72 arg0) - (a0-76 (the-as object (-> v1-72 base))) - ) - (set! (-> (the-as gs-gif-tag a0-76) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-76) regs) GIF_REGS_ALL_AD) - (set! (-> v1-72 base) (&+ (the-as pointer a0-76) 16)) - ) - (let* ((v1-73 arg0) - (a0-78 (-> v1-73 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-78) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-78) 1) (gs-reg64 test-1)) - (set! (-> v1-73 base) (&+ a0-78 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-4 (-> arg1 shaders 2))) (let ((v1-75 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-75) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -842,30 +494,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-80 arg0) - (a2-47 (the-as object (-> a1-80 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-80 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-81 arg0) - (a2-49 (the-as object (-> a1-81 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-81 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-82 arg0) - (a2-51 (-> a1-82 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-82 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1f :scay1 (+ s2-0 31) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 left lid)))) (a1-85 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -906,30 +535,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-95 arg0) - (a2-57 (the-as object (-> a1-95 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-95 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-96 arg0) - (a2-59 (the-as object (-> a1-96 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-96 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-97 arg0) - (a2-61 (-> a1-97 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-97 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x20 :scax1 #x3f :scay1 (+ s2-0 31) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 right lid)))) (a1-100 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 64) 16)) @@ -968,6 +576,7 @@ ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch +;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 79 (defun render-eyes-64 ((arg0 dma-buffer) (arg1 eye-control) (arg2 int)) (local-vars (sv-16 float)) (let ((s4-0 64) @@ -993,30 +602,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -1030,30 +616,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-6 (* 512.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -1070,30 +633,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-26) 6) a3-9 t1-0 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-30 arg0) - (a2-17 (the-as object (-> a1-30 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-30 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-31 arg0) - (a2-19 (the-as object (-> a1-31 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-31 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-32 arg0) - (a2-21 (-> a1-32 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-32 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-10 (* 512.0 (-> arg1 right iris-scale))) (a1-34 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -1112,30 +654,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-32 arg0) - (a0-32 (the-as object (-> v1-32 base))) - ) - (set! (-> (the-as dma-packet a0-32) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-32) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-32) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-32 base) (&+ (the-as pointer a0-32) 16)) - ) - (let* ((v1-33 arg0) - (a0-34 (the-as object (-> v1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a0-34) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-34) regs) GIF_REGS_ALL_AD) - (set! (-> v1-33 base) (&+ (the-as pointer a0-34) 16)) - ) - (let* ((v1-34 arg0) - (a0-36 (-> v1-34 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-36) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 test-1)) - (set! (-> v1-34 base) (&+ a0-36 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-1 (-> arg1 shaders 1))) (let ((v1-36 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-36) 0 quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1153,30 +674,7 @@ (let ((v1-43 (ash 16 (-> s1-1 tex0 tw))) (a0-48 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-47 arg0) - (a2-27 (the-as object (-> a1-47 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-47 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-48 arg0) - (a2-29 (the-as object (-> a1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-48 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-49 arg0) - (a2-31 (-> a1-49 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-49 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-14 (* 512.0 (-> arg1 left pupil-scale))) (a1-51 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -1193,30 +691,9 @@ (set-vector! (-> (the-as (inline-array vector4w) a1-51) 6) a3-30 t1-3 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((a1-55 arg0) - (a2-37 (the-as object (-> a1-55 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-55 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-56 arg0) - (a2-39 (the-as object (-> a1-56 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-56 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-57 arg0) - (a2-41 (-> a1-57 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-57 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-18 (* 512.0 (-> arg1 right pupil-scale))) (a1-59 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -1236,30 +713,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-47 arg0) - (a0-50 (the-as object (-> v1-47 base))) - ) - (set! (-> (the-as dma-packet a0-50) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-50) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-50) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-47 base) (&+ (the-as pointer a0-50) 16)) - ) - (let* ((v1-48 arg0) - (a0-52 (the-as object (-> v1-48 base))) - ) - (set! (-> (the-as gs-gif-tag a0-52) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-52) regs) GIF_REGS_ALL_AD) - (set! (-> v1-48 base) (&+ (the-as pointer a0-52) 16)) - ) - (let* ((v1-49 arg0) - (a0-54 (-> v1-49 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-54) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-54) 1) (gs-reg64 test-1)) - (set! (-> v1-49 base) (&+ a0-54 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 2))) (let ((v1-51 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-51) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1282,30 +738,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-76 arg0) - (a2-47 (the-as object (-> a1-76 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-76 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-77 arg0) - (a2-49 (the-as object (-> a1-77 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-77 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-78 arg0) - (a2-51 (-> a1-78 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-78 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 left lid)))) (a1-81 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -1327,30 +760,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-89 arg0) - (a2-57 (the-as object (-> a1-89 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-89 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-90 arg0) - (a2-59 (the-as object (-> a1-90 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-90 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-91 arg0) - (a2-61 (-> a1-91 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-91 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 right lid)))) (a1-94 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 128) 16)) @@ -1389,6 +801,7 @@ ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch +;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 79 (defun render-eyes-64-different ((arg0 dma-buffer) (arg1 eye-control) (arg2 int)) (local-vars (sv-16 float)) (let ((s4-0 64) @@ -1414,30 +827,7 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-6 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-6) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-6) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-21 arg0) - (a0-8 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-8) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-8) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-8) 16)) - ) - (let* ((v1-22 arg0) - (a0-10 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a0-10) 0) - (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 scissor-1)) - (set! (-> v1-22 base) (&+ a0-10 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0))) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> *eye-work* sprite-tmpl quad 1)) @@ -1451,30 +841,7 @@ (let ((v1-28 (ash 16 (-> s1-0 tex0 tw))) (a0-30 (ash 16 (-> s1-0 tex0 th))) ) - (let* ((a1-22 arg0) - (a2-7 (the-as object (-> a1-22 base))) - ) - (set! (-> (the-as dma-packet a2-7) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-7) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-22 base) (&+ (the-as pointer a2-7) 16)) - ) - (let* ((a1-23 arg0) - (a2-9 (the-as object (-> a1-23 base))) - ) - (set! (-> (the-as gs-gif-tag a2-9) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-9) regs) GIF_REGS_ALL_AD) - (set! (-> a1-23 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((a1-24 arg0) - (a2-11 (-> a1-24 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-11) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-11) 1) (gs-reg64 scissor-1)) - (set! (-> a1-24 base) (&+ a2-11 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-6 (* 512.0 (-> arg1 left iris-scale))) (a1-26 (the-as object (-> arg0 base))) (a2-13 (the int (- f28-0 f0-6))) @@ -1510,30 +877,9 @@ (let ((v1-40 (ash 16 (-> s1-1 tex0 tw))) (a0-42 (ash 16 (-> s1-1 tex0 th))) ) - (let* ((a1-32 arg0) - (a2-17 (the-as object (-> a1-32 base))) - ) - (set! (-> (the-as dma-packet a2-17) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-17) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-32 base) (&+ (the-as pointer a2-17) 16)) - ) - (let* ((a1-33 arg0) - (a2-19 (the-as object (-> a1-33 base))) - ) - (set! (-> (the-as gs-gif-tag a2-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-19) regs) GIF_REGS_ALL_AD) - (set! (-> a1-33 base) (&+ (the-as pointer a2-19) 16)) - ) - (let* ((a1-34 arg0) - (a2-21 (-> a1-34 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-21) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-21) 1) (gs-reg64 scissor-1)) - (set! (-> a1-34 base) (&+ a2-21 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-10 (* 512.0 (-> arg1 right iris-scale))) (a1-36 (the-as object (-> arg0 base))) (a2-23 (the int (- f30-0 f0-10))) @@ -1552,30 +898,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-44 arg0) - (a0-44 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-44 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-45 arg0) - (a0-46 (the-as object (-> v1-45 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-45 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((v1-46 arg0) - (a0-48 (-> v1-46 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-48) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-48) 1) (gs-reg64 test-1)) - (set! (-> v1-46 base) (&+ a0-48 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-2 (-> arg1 shaders 1))) (let ((v1-48 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-48) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1593,30 +918,7 @@ (let ((v1-55 (ash 16 (-> s1-2 tex0 tw))) (a0-60 (ash 16 (-> s1-2 tex0 th))) ) - (let* ((a1-49 arg0) - (a2-27 (the-as object (-> a1-49 base))) - ) - (set! (-> (the-as dma-packet a2-27) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-27) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-27) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-49 base) (&+ (the-as pointer a2-27) 16)) - ) - (let* ((a1-50 arg0) - (a2-29 (the-as object (-> a1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a2-29) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-29) regs) GIF_REGS_ALL_AD) - (set! (-> a1-50 base) (&+ (the-as pointer a2-29) 16)) - ) - (let* ((a1-51 arg0) - (a2-31 (-> a1-51 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-31) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-31) 1) (gs-reg64 scissor-1)) - (set! (-> a1-51 base) (&+ a2-31 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-14 (* 512.0 (-> arg1 left pupil-scale))) (a1-53 (the-as object (-> arg0 base))) (a2-33 (the int (- f28-0 f0-14))) @@ -1652,30 +954,9 @@ (let ((v1-67 (ash 16 (-> s1-3 tex0 tw))) (a0-72 (ash 16 (-> s1-3 tex0 th))) ) - (let* ((a1-59 arg0) - (a2-37 (the-as object (-> a1-59 base))) - ) - (set! (-> (the-as dma-packet a2-37) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-37) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-59 base) (&+ (the-as pointer a2-37) 16)) - ) - (let* ((a1-60 arg0) - (a2-39 (the-as object (-> a1-60 base))) - ) - (set! (-> (the-as gs-gif-tag a2-39) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-39) regs) GIF_REGS_ALL_AD) - (set! (-> a1-60 base) (&+ (the-as pointer a2-39) 16)) - ) - (let* ((a1-61 arg0) - (a2-41 (-> a1-61 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-41) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-41) 1) (gs-reg64 scissor-1)) - (set! (-> a1-61 base) (&+ a2-41 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-18 (* 512.0 (-> arg1 right pupil-scale))) (a1-63 (the-as object (-> arg0 base))) (a2-43 (the int (- f30-0 f0-18))) @@ -1695,30 +976,9 @@ ) ) (&+! (-> arg0 base) 112) - (let* ((v1-71 arg0) - (a0-74 (the-as object (-> v1-71 base))) - ) - (set! (-> (the-as dma-packet a0-74) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-74) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-74) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-71 base) (&+ (the-as pointer a0-74) 16)) - ) - (let* ((v1-72 arg0) - (a0-76 (the-as object (-> v1-72 base))) - ) - (set! (-> (the-as gs-gif-tag a0-76) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-76) regs) GIF_REGS_ALL_AD) - (set! (-> v1-72 base) (&+ (the-as pointer a0-76) 16)) - ) - (let* ((v1-73 arg0) - (a0-78 (-> v1-73 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-78) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-78) 1) (gs-reg64 test-1)) - (set! (-> v1-73 base) (&+ a0-78 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s1-4 (-> arg1 shaders 2))) (let ((v1-75 (the-as object (-> arg0 base)))) (set! (-> (the-as dma-gif-packet v1-75) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) @@ -1741,30 +1001,7 @@ (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) ) ) - (let* ((a1-80 arg0) - (a2-47 (the-as object (-> a1-80 base))) - ) - (set! (-> (the-as dma-packet a2-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-80 base) (&+ (the-as pointer a2-47) 16)) - ) - (let* ((a1-81 arg0) - (a2-49 (the-as object (-> a1-81 base))) - ) - (set! (-> (the-as gs-gif-tag a2-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-49) regs) GIF_REGS_ALL_AD) - (set! (-> a1-81 base) (&+ (the-as pointer a2-49) 16)) - ) - (let* ((a1-82 arg0) - (a2-51 (-> a1-82 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-51) 0) - (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-51) 1) (gs-reg64 scissor-1)) - (set! (-> a1-82 base) (&+ a2-51 16)) - ) + (dma-buffer-add-gs-set arg0 (scissor-1 (new 'static 'gs-scissor :scax1 #x3f :scay1 (+ s2-0 63) :scay0 s2-0))) (let* ((f0-27 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 left lid)))) (a1-85 (the-as object (-> arg0 base))) (a2-53 (* s4-0 16)) @@ -1805,30 +1042,9 @@ (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) ) ) - (let* ((a1-95 arg0) - (a2-57 (the-as object (-> a1-95 base))) - ) - (set! (-> (the-as dma-packet a2-57) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-57) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-57) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a1-95 base) (&+ (the-as pointer a2-57) 16)) - ) - (let* ((a1-96 arg0) - (a2-59 (the-as object (-> a1-96 base))) - ) - (set! (-> (the-as gs-gif-tag a2-59) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a2-59) regs) GIF_REGS_ALL_AD) - (set! (-> a1-96 base) (&+ (the-as pointer a2-59) 16)) - ) - (let* ((a1-97 arg0) - (a2-61 (-> a1-97 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a2-61) 0) - (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0) - ) - (set! (-> (the-as (pointer gs-reg64) a2-61) 1) (gs-reg64 scissor-1)) - (set! (-> a1-97 base) (&+ a2-61 16)) - ) + (dma-buffer-add-gs-set arg0 + (scissor-1 (new 'static 'gs-scissor :scax0 #x40 :scax1 #x7f :scay1 (+ s2-0 63) :scay0 s2-0)) + ) (let* ((f0-37 (+ (the float (+ s3-0 -64)) (* 64.0 (-> arg1 right lid)))) (a1-100 (the-as object (-> arg0 base))) (a2-64 (* (+ s4-0 128) 16)) @@ -1856,67 +1072,18 @@ ;; definition for function debug-eyes ;; INFO: Used lq/sq ;; WARN: Return type mismatch pointer vs none. -;; ERROR: Failed store: (s.d! (+ s4-0 8) v1-3) at op 24 +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 5 (defun debug-eyes ((arg0 dma-buffer)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((s5-0 arg0) - (s4-0 (-> s5-0 base)) - ) - (set! (-> (the-as (pointer int64) s4-0)) #x30003) - (let ((v1-3 71)) - (s.d! (+ s4-0 8) v1-3) - ) - (let ((v1-4 68)) - (s.d! (+ s4-0 16) v1-4) - ) - (let ((v1-5 66)) - (s.d! (+ s4-0 24) v1-5) - ) - (let ((v1-14 - (logior (logior (logior (shr (shl (-> *eyes-texture-base* vram-block) 50) 50) #x4000) (shr (shl (log2 64) 60) 34)) - (shr (shl (log2 512) 60) 30) - ) - ) - ) - (s.d! (+ s4-0 32) v1-14) - ) - (let ((v1-15 6)) - (s.d! (+ s4-0 40) v1-15) - ) - (let ((v1-16 (the-as uint #xeed00080120))) - (s.d! (+ s4-0 48) v1-16) - ) - (let ((v1-17 20)) - (s.d! (+ s4-0 56) v1-17) - ) - (let ((v1-18 (the-as uint #x8000000080))) - (s.d! (+ s4-0 64) v1-18) - ) - (let ((v1-19 59)) - (s.d! (+ s4-0 72) v1-19) - ) - (let ((v1-20 5)) - (s.d! (+ s4-0 80) v1-20) - ) - (let ((v1-21 8)) - (s.d! (+ s4-0 88) v1-21) - ) - (set! (-> s5-0 base) (&+ s4-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 + (new 'static 'gs-tex0 :tbw #x1 :th (log2 512) :tw (log2 64) :tbp0 (-> *eyes-texture-base* vram-block)) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x4 :l #x1 :k #xeed)) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + ) (let ((v1-23 (-> arg0 base))) (set! (-> (the-as (pointer uint128) v1-23)) (-> *eye-work* sprite-tmpl dma-vif quad)) (let ((a0-10 (-> *eye-work* sprite-tmpl quad 1))) @@ -1975,6 +1142,7 @@ ;; definition for function update-eyes ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-38 8) 0) at op 160 (defun update-eyes () (when (not (-> *blit-displays-work* screen-copied)) (dotimes (gp-0 6) @@ -2045,75 +1213,19 @@ ) ) ) - (let* ((s2-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (s3-0 (-> s2-0 base)) - ) + (with-dma-buffer-add-bucket ((s2-0 (-> *display* frames (-> *display* on-screen) global-buf)) + (the-as bucket-id (-> s4-0 bucket)) + ) (set-display-gs-state-offset s2-0 (the-as int (-> *eyes-texture-base* vram-page)) 128 256 0 0 64 64) - (let* ((v1-49 s2-0) - (a0-38 (the-as object (-> v1-49 base))) - ) - (set! (-> (the-as dma-packet a0-38) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-38) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-38) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-49 base) (&+ (the-as pointer a0-38) 16)) - ) - (let* ((v1-50 s2-0) - (a0-40 (the-as object (-> v1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a0-40) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-40) regs) GIF_REGS_ALL_AD) - (set! (-> v1-50 base) (&+ (the-as pointer a0-40) 16)) - ) - (let* ((v1-51 s2-0) - (a0-42 (-> v1-51 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-42) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-42) 1) (gs-reg64 test-1)) - (set! (-> v1-51 base) (&+ a0-42 16)) - ) + (dma-buffer-add-gs-set s2-0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (if (-> s4-0 different-eyes) (render-eyes-64-different s2-0 s4-0 (/ s5-0 4)) (render-eyes-64 s2-0 s4-0 (/ s5-0 4)) ) (reset-display-gs-state *display* s2-0) - (let* ((v1-55 s2-0) - (a0-47 (the-as object (-> v1-55 base))) - ) - (set! (-> (the-as dma-packet a0-47) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-47) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-47) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-55 base) (&+ (the-as pointer a0-47) 16)) - ) - (let* ((v1-56 s2-0) - (a0-49 (the-as object (-> v1-56 base))) - ) - (set! (-> (the-as gs-gif-tag a0-49) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-49) regs) GIF_REGS_ALL_AD) - (set! (-> v1-56 base) (&+ (the-as pointer a0-49) 16)) - ) - (let* ((v1-57 s2-0) - (a0-51 (-> v1-57 base)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-51) 0) (gs-reg64 dimx)) - (set! (-> (the-as (pointer gs-reg64) a0-51) 1) (gs-reg64 alpha-1)) - (set! (-> v1-57 base) (&+ a0-51 16)) - ) - (let ((a3-1 (-> s2-0 base))) - (let ((v1-58 (the-as object (-> s2-0 base)))) - (set! (-> (the-as dma-packet v1-58) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-58) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-58) vif1) (new 'static 'vif-tag)) - (set! (-> s2-0 base) (&+ (the-as pointer v1-58) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (the-as bucket-id (-> s4-0 bucket)) - s3-0 - (the-as (pointer dma-tag) a3-1) - ) - ) + (dma-buffer-add-gs-set s2-0 (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) ) ) ((and (< gp-0 3) @@ -2128,75 +1240,19 @@ ) ) ) - (let* ((s2-1 (-> *display* frames (-> *display* on-screen) global-buf)) - (s3-1 (-> s2-1 base)) - ) + (with-dma-buffer-add-bucket ((s2-1 (-> *display* frames (-> *display* on-screen) global-buf)) + (the-as bucket-id (-> s4-0 bucket)) + ) (set-display-gs-state-offset s2-1 (the-as int (-> *eyes-texture-base* vram-page)) 64 512 0 0 32 32) - (let* ((v1-78 s2-1) - (a0-63 (the-as object (-> v1-78 base))) - ) - (set! (-> (the-as dma-packet a0-63) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-63) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-63) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-78 base) (&+ (the-as pointer a0-63) 16)) - ) - (let* ((v1-79 s2-1) - (a0-65 (the-as object (-> v1-79 base))) - ) - (set! (-> (the-as gs-gif-tag a0-65) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-65) regs) GIF_REGS_ALL_AD) - (set! (-> v1-79 base) (&+ (the-as pointer a0-65) 16)) - ) - (let* ((v1-80 s2-1) - (a0-67 (-> v1-80 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-67) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-67) 1) (gs-reg64 test-1)) - (set! (-> v1-80 base) (&+ a0-67 16)) - ) + (dma-buffer-add-gs-set s2-1 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (if (-> s4-0 different-eyes) (render-eyes-32-different s2-1 s4-0 s5-0) (render-eyes-32 s2-1 s4-0 s5-0) ) (reset-display-gs-state *display* s2-1) - (let* ((v1-84 s2-1) - (a0-72 (the-as object (-> v1-84 base))) - ) - (set! (-> (the-as dma-packet a0-72) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-72) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-72) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-84 base) (&+ (the-as pointer a0-72) 16)) - ) - (let* ((v1-85 s2-1) - (a0-74 (the-as object (-> v1-85 base))) - ) - (set! (-> (the-as gs-gif-tag a0-74) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-74) regs) GIF_REGS_ALL_AD) - (set! (-> v1-85 base) (&+ (the-as pointer a0-74) 16)) - ) - (let* ((v1-86 s2-1) - (a0-76 (-> v1-86 base)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-76) 0) (gs-reg64 dimx)) - (set! (-> (the-as (pointer gs-reg64) a0-76) 1) (gs-reg64 alpha-1)) - (set! (-> v1-86 base) (&+ a0-76 16)) - ) - (let ((a3-3 (-> s2-1 base))) - (let ((v1-87 (the-as object (-> s2-1 base)))) - (set! (-> (the-as dma-packet v1-87) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-87) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-87) vif1) (new 'static 'vif-tag)) - (set! (-> s2-1 base) (&+ (the-as pointer v1-87) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (the-as bucket-id (-> s4-0 bucket)) - s3-1 - (the-as (pointer dma-tag) a3-3) - ) - ) + (dma-buffer-add-gs-set s2-1 (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) ) ) ) @@ -2408,7 +1464,3 @@ 0 (none) ) - - - - diff --git a/test/decompiler/reference/jak2/engine/gfx/hw/display_REF.gc b/test/decompiler/reference/jak2/engine/gfx/hw/display_REF.gc index 3cefab6346..38309dd03d 100644 --- a/test/decompiler/reference/jak2/engine/gfx/hw/display_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/hw/display_REF.gc @@ -292,133 +292,51 @@ ;; ERROR: function was not converted to expressions. Cannot decompile. ;; definition for function set-display-gs-state +;; ERROR: Failed store: (s.w! (+ t3-0 8) t4-1) at op 7 (defun set-display-gs-state ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int)) (let ((t2-0 (/ (+ arg2 63) 64))) - (let* ((v1-1 arg0) - (t3-0 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet t3-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t3-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet t3-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer t3-0) 16)) - ) - (let* ((v1-2 arg0) - (t3-2 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag t3-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> (the-as gs-gif-tag t3-2) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer t3-2) 16)) - ) - (let* ((v1-3 arg0) - (t3-4 (-> v1-3 base)) - ) - (set! (-> (the-as (pointer gs-scissor) t3-4) 0) - (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)) - ) - (set! (-> (the-as (pointer gs-reg64) t3-4) 1) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-xy-offset) t3-4) 2) (new 'static 'gs-xy-offset)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 3) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) t3-4) 4) - (new 'static 'gs-frame :fbp arg1 :fbw t2-0 :psm arg5 :fbmsk arg4) - ) - (set! (-> (the-as (pointer gs-reg64) t3-4) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-test) t3-4) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - (set! (-> (the-as (pointer gs-reg64) t3-4) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) t3-4) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-zbuf) t3-4) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 11) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer uint64) t3-4) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t3-4) 13) (gs-reg64 texflush)) - (set! (-> v1-3 base) (&+ t3-4 112)) - ) + (dma-buffer-add-gs-set-flusha arg0 + (scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1))) + (xyoffset-1 (new 'static 'gs-xy-offset)) + (frame-1 (new 'static 'gs-frame :fbp arg1 :fbw t2-0 :psm arg5 :fbmsk arg4)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (texflush 0) + ) ) arg0 ) ;; definition for function set-display-gs-state-offset +;; ERROR: Failed store: (s.w! (+ t5-0 8) t6-1) at op 7 (defun set-display-gs-state-offset ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int)) (let ((t4-0 (/ (+ arg2 63) 64))) - (let* ((v1-1 arg0) - (t5-0 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet t5-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t5-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet t5-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer t5-0) 16)) - ) - (let* ((v1-2 arg0) - (t5-2 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag t5-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> (the-as gs-gif-tag t5-2) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer t5-2) 16)) - ) - (let* ((v1-3 arg0) - (t5-4 (-> v1-3 base)) - ) - (set! (-> (the-as (pointer gs-scissor) t5-4) 0) - (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)) - ) - (set! (-> (the-as (pointer gs-reg64) t5-4) 1) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-xy-offset) t5-4) 2) - (new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16)) - ) - (set! (-> (the-as (pointer gs-reg64) t5-4) 3) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) t5-4) 4) - (new 'static 'gs-frame :fbp arg1 :fbw t4-0 :psm arg5 :fbmsk arg4) - ) - (set! (-> (the-as (pointer gs-reg64) t5-4) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-test) t5-4) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - (set! (-> (the-as (pointer gs-reg64) t5-4) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) t5-4) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) t5-4) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-zbuf) t5-4) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) t5-4) 11) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer uint64) t5-4) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t5-4) 13) (gs-reg64 texflush)) - (set! (-> v1-3 base) (&+ t5-4 112)) - ) + (dma-buffer-add-gs-set-flusha arg0 + (scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1))) + (xyoffset-1 (new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16))) + (frame-1 (new 'static 'gs-frame :fbp arg1 :fbw t4-0 :psm arg5 :fbmsk arg4)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (texflush 0) + ) ) arg0 ) ;; definition for function reset-display-gs-state +;; ERROR: Failed store: (s.w! (+ a2-0 8) a3-1) at op 5 (defun reset-display-gs-state ((arg0 display) (arg1 dma-buffer)) - (let* ((v1-0 arg1) - (a2-0 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a2-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet a2-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a2-0) 16)) - ) - (let* ((v1-1 arg1) - (a2-2 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a2-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> (the-as gs-gif-tag a2-2) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a2-2) 16)) - ) - (let* ((v1-2 arg1) - (a1-1 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-scissor) a1-1) 0) (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 1) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-xy-offset) a1-1) 2) (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 3) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) a1-1) 4) (new 'static 'gs-frame :fbp #x198 :fbw #x8)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 5) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-test) a1-1) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) - (set! (-> (the-as (pointer gs-reg64) a1-1) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) a1-1) 8) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-zbuf) a1-1) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a1-1) 11) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer uint64) a1-1) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a1-1) 13) (gs-reg64 texflush)) - (set! (-> v1-2 base) (&+ a1-1 112)) - ) + (dma-buffer-add-gs-set-flusha arg1 + (scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f)) + (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300)) + (frame-1 (new 'static 'gs-frame :fbp #x198 :fbw #x8)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) + (texa (new 'static 'gs-texa :ta1 #x80)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (texflush 0) + ) arg0 ) diff --git a/test/decompiler/reference/jak2/engine/gfx/hw/gs_REF.gc b/test/decompiler/reference/jak2/engine/gfx/hw/gs_REF.gc index 89129b09ea..f8aee7ac66 100644 --- a/test/decompiler/reference/jak2/engine/gfx/hw/gs_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/hw/gs_REF.gc @@ -355,8 +355,8 @@ bits 5 and 6 (0x20 and 0x40) should be zero" ;; definition of type gs-uv (deftype gs-uv (uint64) - ((u uint16 :offset 0 :size 14) - (v uint16 :offset 16 :size 14) + ((u uint16 :offset 0 :size 16) + (v uint16 :offset 16 :size 16) ) :method-count-assert 9 :size-assert #x8 @@ -462,7 +462,7 @@ bits 5 and 6 (0x20 and 0x40) should be zero" (spsm uint8 :offset 24 :size 6) (dbp uint16 :offset 32 :size 14) (dbw uint8 :offset 48 :size 6) - (dpsm uint8 :offset 56 :size 6) + (dpsm gs-psm :offset 56 :size 6) ) :method-count-assert 9 :size-assert #x8 diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc index 3f6db0210f..21c2363211 100644 --- a/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/merc/emerc_REF.gc @@ -48,6 +48,7 @@ ;; definition for function emerc-vu1-init-buffer ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-4 8) 0) at op 28 (defun emerc-vu1-init-buffer ((dma-bucket bucket-id) (test gs-test) (arg2 int)) (let ((bucket (-> *display* frames (-> *display* on-screen) bucket-group dma-bucket))) (when (!= bucket (-> bucket last)) @@ -57,28 +58,7 @@ (set! (-> dma-buf base) (the-as pointer (emerc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base)))) ) - (let* ((v1-12 dma-buf) - (a0-4 (the-as object (-> v1-12 base))) - ) - (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-12 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((v1-13 dma-buf) - (a0-6 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD) - (set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-14 dma-buf) - (a0-8 (-> v1-14 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-8) 0) test) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> v1-14 base) (&+ a0-8 16)) - ) + (dma-buffer-add-gs-set dma-buf (test-1 test)) (let ((v1-15 (the-as dma-packet (-> dma-buf base)))) (set! (-> v1-15 dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next))) (set! (-> v1-15 vif0) (new 'static 'vif-tag)) diff --git a/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc b/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc index e026b817e5..71bf02117b 100644 --- a/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/merc/merc_REF.gc @@ -213,6 +213,7 @@ ) ;; definition for method 3 of type merc-fragment-control +;; INFO: this function exists in multiple non-identical object files (defmethod inspect merc-fragment-control ((obj merc-fragment-control)) (format #t "[~8x] ~A~%" obj 'merc-fragment-control) (format #t "~Tunsigned-four-count: ~D~%" (-> obj unsigned-four-count)) @@ -269,6 +270,7 @@ ) ;; definition for method 3 of type merc-ctrl +;; INFO: this function exists in multiple non-identical object files (defmethod inspect merc-ctrl ((obj merc-ctrl)) (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tname: ~A~%" (-> obj name)) @@ -582,6 +584,7 @@ ) ;; definition for function merc-vu1-init-buffer +;; ERROR: Failed store: (s.w! (+ a0-4 8) 0) at op 28 (defun merc-vu1-init-buffer ((dma-bucket bucket-id) (arg1 int) (arg2 symbol)) (let ((bucket (-> *display* frames (-> *display* on-screen) bucket-group dma-bucket))) (when (!= bucket (-> bucket last)) @@ -589,48 +592,23 @@ (s3-1 (-> dma-buf base)) ) (set! (-> dma-buf base) - (the-as - pointer - (merc-vu1-initialize-chain (the-as dma-gif-packet (the-as dma-packet (-> dma-buf base))) arg1) - ) + (the-as pointer (merc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base)) arg1)) ) - (let* ((v1-12 dma-buf) - (a0-4 (the-as dma-packet (-> v1-12 base))) - ) - (set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> a0-4 vif0) (new 'static 'vif-tag)) - (set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-12 base) (the-as pointer (the-as dma-packet (&+ a0-4 16)))) - ) - (let* ((v1-13 dma-buf) - (a0-6 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD) - (set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-14 dma-buf) - (a0-8 (-> v1-14 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-8) 0) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-zbuf) a0-8) 2) - (if arg2 - (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)) - (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 zbuf-1)) - (set! (-> v1-14 base) (&+ a0-8 32)) - ) + (dma-buffer-add-gs-set dma-buf + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (zbuf-1 (if arg2 + #x1000130 + (the-as int (the-as uint #x101000130)) + ) + ) + ) (let ((v1-15 (the-as object (-> dma-buf base)))) (set! (-> (the-as dma-packet v1-15) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next))) (set! (-> (the-as dma-packet v1-15) vif0) (new 'static 'vif-tag)) diff --git a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc index 8455253ac8..3d6b2911db 100644 --- a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-h_REF.gc @@ -1002,7 +1002,7 @@ (generate-verts (_type_ ocean-vert-array ocean-height-array) none 16) (add-colors! (_type_ vector ocean-vertex) none 17) (ocean-method-18 (_type_ (pointer ocean-colors) (pointer ocean-colors)) none 18) - (init-buffer! (_type_ dma-buffer) pointer 19) + (init-buffer! (_type_ dma-buffer) none 19) (end-buffer! (_type_ dma-buffer) none 20) (set-corners! (_type_ float float) float 21) (ocean-near-add-call (_type_ dma-buffer int) none 22) @@ -1064,7 +1064,7 @@ (draw-ocean-texture (_type_ dma-buffer int) none 78) (ocean-method-79 (_type_ dma-buffer) none 79) (ocean-method-80 (_type_ (pointer rgba)) none 80) - (ocean-method-81 (_type_ dma-buffer) none 81) + (ocean-method-81 (_type_ dma-buffer) int 81) (draw-envmap-debug (_type_ dma-buffer) none 82) (ocean-method-83 (_type_ dma-buffer float) none 83) (ocean-method-84 (_type_ dma-buffer sky-upload-data vector4w float) none 84) diff --git a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-near_REF.gc b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-near_REF.gc index 16d22c9874..69ee91ac92 100644 --- a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-near_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-near_REF.gc @@ -668,32 +668,12 @@ ;; definition for method 29 of type ocean ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 6 (defmethod draw-ocean-near ocean ((obj ocean) (arg0 dma-buffer)) (local-vars (sv-16 uint)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-5) 0) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal))) + ) (dma-buffer-add-vu-function arg0 ocean-near-block 1) (let* ((v1-3 arg0) (a0-8 (the-as object (-> v1-3 base))) diff --git a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-texture_REF.gc b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-texture_REF.gc index 37877013c9..ad890afad1 100644 --- a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-texture_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean-texture_REF.gc @@ -162,37 +162,15 @@ ;; definition for method 78 of type ocean ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-3 8) 0) at op 21 (defmethod draw-ocean-texture ocean ((obj ocean) (arg0 dma-buffer) (arg1 int)) (set-display-gs-state arg0 21 128 128 0 0) (ocean-texture-add-envmap obj arg0) - (let* ((v1-2 arg0) - (a0-3 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as dma-packet a0-3) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-3) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-3) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-2 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-3 arg0) - (a0-5 (the-as object (-> v1-3 base))) - ) - (set! (-> (the-as gs-gif-tag a0-5) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-5) regs) GIF_REGS_ALL_AD) - (set! (-> v1-3 base) (&+ (the-as pointer a0-5) 16)) - ) - (let* ((v1-4 arg0) - (a0-7 (-> v1-4 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-7) 0) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-7) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-7) 2) (new 'static 'gs-alpha :b #x2 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-7) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex1) a0-7) 4) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-7) 5) (gs-reg64 tex1-1)) - (set! (-> v1-4 base) (&+ a0-7 48)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1)) + (tex1-1 (new 'static 'gs-tex1)) + ) (dma-buffer-add-vu-function arg0 ocean-texture-vu1-block 1) (let* ((v1-5 arg0) (a0-10 (the-as object (-> v1-5 base))) @@ -226,44 +204,17 @@ ;; definition for method 79 of type ocean ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 14 (defmethod ocean-method-79 ocean ((obj ocean) (arg0 dma-buffer)) (set-display-gs-state arg0 53 64 64 0 0) - (let* ((v1-0 arg0) - (a0-2 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16)) - ) - (let* ((v1-1 arg0) - (a0-4 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 4) - (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 8) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (texflush 0) + ) (let ((v1-17 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-17 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-17 1 quad) (-> obj sprite-tmpl quad 1)) @@ -275,32 +226,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 61 32 32 0 0) - (let* ((v1-20 arg0) - (a0-16 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-16) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-16) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-16) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-16) 16)) - ) - (let* ((v1-21 arg0) - (a0-18 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-18) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-18) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-18) 16)) - ) - (let* ((s4-1 arg0) - (s3-1 (-> s4-1 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-1) 0) - (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x1 :tcc #x1 :th (log2 64) :tw (log2 64)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-1) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 3) (gs-reg64 texflush)) - (set! (-> s4-1 base) (&+ s3-1 32)) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x1 :tcc #x1 :th (log2 64) :tw (log2 64))) + (texflush 0) + ) (let ((v1-30 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-30 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-30 1 quad) (-> obj sprite-tmpl quad 1)) @@ -312,32 +241,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 63 16 16 0 0) - (let* ((v1-33 arg0) - (a0-30 (the-as object (-> v1-33 base))) - ) - (set! (-> (the-as dma-packet a0-30) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-30) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-30) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-33 base) (&+ (the-as pointer a0-30) 16)) - ) - (let* ((v1-34 arg0) - (a0-32 (the-as object (-> v1-34 base))) - ) - (set! (-> (the-as gs-gif-tag a0-32) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-32) regs) GIF_REGS_ALL_AD) - (set! (-> v1-34 base) (&+ (the-as pointer a0-32) 16)) - ) - (let* ((s4-2 arg0) - (s3-2 (-> s4-2 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-2) 0) - (new 'static 'gs-tex0 :tbp0 #x7a0 :tcc #x1 :th (log2 32) :tw (log2 32)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-2) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 3) (gs-reg64 texflush)) - (set! (-> s4-2 base) (&+ s3-2 32)) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x7a0 :tcc #x1 :th (log2 32) :tw (log2 32))) + (texflush 0) + ) (let ((v1-43 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-43 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-43 1 quad) (-> obj sprite-tmpl quad 1)) @@ -349,32 +256,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 64 8 8 0 0) - (let* ((v1-46 arg0) - (a0-44 (the-as object (-> v1-46 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-46 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-47 arg0) - (a0-46 (the-as object (-> v1-47 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-47 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((s4-3 arg0) - (s3-3 (-> s4-3 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-3) 0) - (new 'static 'gs-tex0 :tbp0 #x7e0 :tcc #x1 :th (log2 16) :tw (log2 16)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-3) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-3) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-3) 3) (gs-reg64 texflush)) - (set! (-> s4-3 base) (&+ s3-3 32)) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x7e0 :tcc #x1 :th (log2 16) :tw (log2 16))) + (texflush 0) + ) (let ((v1-56 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-56 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-56 1 quad) (-> obj sprite-tmpl quad 1)) @@ -386,32 +271,10 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 65 8 8 0 0) - (let* ((v1-59 arg0) - (a0-58 (the-as object (-> v1-59 base))) - ) - (set! (-> (the-as dma-packet a0-58) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-58) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-58) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-59 base) (&+ (the-as pointer a0-58) 16)) - ) - (let* ((v1-60 arg0) - (a0-60 (the-as object (-> v1-60 base))) - ) - (set! (-> (the-as gs-gif-tag a0-60) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-60) regs) GIF_REGS_ALL_AD) - (set! (-> v1-60 base) (&+ (the-as pointer a0-60) 16)) - ) - (let* ((s4-4 arg0) - (s3-4 (-> s4-4 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s3-4) 0) - (new 'static 'gs-tex0 :tbp0 #x800 :tcc #x1 :th (log2 8) :tw (log2 8)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-4) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) s3-4) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-4) 3) (gs-reg64 texflush)) - (set! (-> s4-4 base) (the-as pointer (the-as (inline-array vector4w) (&+ s3-4 32)))) - ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x800 :tcc #x1 :th (log2 8) :tw (log2 8))) + (texflush 0) + ) (let ((v1-69 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-69 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-69 1 quad) (-> obj sprite-tmpl quad 1)) @@ -476,45 +339,17 @@ ;; definition for method 81 of type ocean ;; INFO: Used lq/sq -;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 14 (defmethod ocean-method-81 ocean ((obj ocean) (arg0 dma-buffer)) (set-display-gs-state arg0 53 128 128 0 0) - (let* ((v1-0 arg0) - (a0-2 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-2) 16)) - ) - (let* ((v1-1 arg0) - (a0-4 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 4) - (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 8) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :tcc #x1 :th (log2 128) :tw (log2 128))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (texflush 0) + ) (let ((v1-17 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-17 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-17 1 quad) (-> obj sprite-tmpl quad 1)) @@ -525,34 +360,12 @@ (set! (-> v1-17 6 quad) (-> obj xy8080 quad)) ) (&+! (-> arg0 base) 112) - (let* ((v1-20 arg0) - (a0-15 (the-as object (-> v1-20 base))) - ) - (set! (-> (the-as dma-packet a0-15) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-15) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-15) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer a0-15) 16)) - ) - (let* ((v1-21 arg0) - (a0-17 (the-as object (-> v1-21 base))) - ) - (set! (-> (the-as gs-gif-tag a0-17) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-17) regs) GIF_REGS_ALL_AD) - (set! (-> v1-21 base) (&+ (the-as pointer a0-17) 16)) - ) - (let* ((v1-22 arg0) - (a0-19 (-> v1-22 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-19) 0) (new 'static 'gs-bitbltbuf :dbp #x860)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-19) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-19) 4) (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-19) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-19) 7) (gs-reg64 trxdir)) - (set! (-> v1-22 base) (&+ a0-19 64)) - ) + (dma-buffer-add-gs-set arg0 + (bitbltbuf (new 'static 'gs-bitbltbuf :dbp #x860)) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) + (trxdir (new 'static 'gs-trxdir)) + ) (let ((v1-23 (the-as object (-> arg0 base)))) (set! (-> (the-as (inline-array vector4w) v1-23) 0 quad) (-> obj clut-tmpl dma-vif quad)) (set! (-> (the-as (inline-array vector4w) v1-23) 1 quad) (-> obj clut-tmpl quad 1)) @@ -560,46 +373,24 @@ ) (&+! (-> arg0 base) 1056) (set-display-gs-state arg0 85 128 128 0 0) - (let* ((v1-27 arg0) - (a0-25 (the-as object (-> v1-27 base))) - ) - (set! (-> (the-as dma-packet a0-25) dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-25) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-25) vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-27 base) (&+ (the-as pointer a0-25) 16)) - ) - (let* ((v1-28 arg0) - (a0-27 (the-as object (-> v1-28 base))) - ) - (set! (-> (the-as gs-gif-tag a0-27) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5)) - (set! (-> (the-as gs-gif-tag a0-27) regs) GIF_REGS_ALL_AD) - (set! (-> v1-28 base) (&+ (the-as pointer a0-27) 16)) - ) - (let* ((s4-1 arg0) - (s3-1 (-> s4-1 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s3-1) 0) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-1) 2) (new 'static 'gs-tex0 - :tbp0 #x2a0 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x860 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-1) 4) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-1) 6) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-1) 8) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 9) (gs-reg64 texflush)) - (set! (-> s4-1 base) (&+ s3-1 80)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha)) + (tex0-1 + (new 'static 'gs-tex0 + :tbp0 #x2a0 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x860 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1)) + (clamp-1 (new 'static 'gs-clamp)) + (texflush 0) + ) (let ((v1-40 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-40 0 quad) (-> obj sprite-tmpl3 dma-vif quad)) (set! (-> v1-40 1 quad) (-> obj sprite-tmpl3 quad 1)) @@ -610,32 +401,11 @@ (set! (-> v1-40 6 quad) (-> obj xy8080 quad)) ) (&+! (-> arg0 base) 112) - (let* ((v1-43 arg0) - (a0-38 (the-as object (-> v1-43 base))) - ) - (set! (-> (the-as dma-packet a0-38) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-38) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-38) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-43 base) (&+ (the-as pointer a0-38) 16)) - ) - (let* ((v1-44 arg0) - (a0-40 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as gs-gif-tag a0-40) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-40) regs) GIF_REGS_ALL_AD) - (set! (-> v1-44 base) (&+ (the-as pointer a0-40) 16)) - ) - (let* ((v1-45 arg0) - (a0-42 (-> v1-45 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-42) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-42) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex1) a0-42) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-42) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) a0-42) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-42) 5) (gs-reg64 texflush)) - (set! (-> v1-45 base) (&+ a0-42 48)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texflush 0) + ) (let ((v1-46 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-46 0 quad) (-> obj sprite-tmpl3 dma-vif quad)) (set! (-> v1-46 1 quad) (-> obj sprite-tmpl3 quad 1)) @@ -647,36 +417,12 @@ ) (&+! (-> arg0 base) 112) (set-display-gs-state arg0 21 128 128 0 0) - (let* ((v1-49 arg0) - (a0-52 (the-as object (-> v1-49 base))) - ) - (set! (-> (the-as dma-packet a0-52) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-52) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-52) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-49 base) (&+ (the-as pointer a0-52) 16)) - ) - (let* ((v1-50 arg0) - (a0-54 (the-as object (-> v1-50 base))) - ) - (set! (-> (the-as gs-gif-tag a0-54) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-54) regs) GIF_REGS_ALL_AD) - (set! (-> v1-50 base) (&+ (the-as pointer a0-54) 16)) - ) - (let* ((s4-2 arg0) - (s3-2 (-> s4-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s3-2) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-2) 2) - (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x2 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-2) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) s3-2) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 7) (gs-reg64 texflush)) - (set! (-> s4-2 base) (&+ s3-2 64)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x6a0 :tbw #x2 :th (log2 128) :tw (log2 128))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texflush 0) + ) (let ((v1-63 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-63 0 quad) (-> obj sprite-tmpl3 dma-vif quad)) (set! (-> v1-63 1 quad) (-> obj sprite-tmpl3 quad 1)) @@ -697,214 +443,73 @@ (a0-69 (/ (+ (* s5-1 2) 63) 64)) (a1-55 #x3fff) ) - (let* ((a2-3 arg0) - (a3-3 (the-as object (-> a2-3 base))) - ) - (set! (-> (the-as dma-packet a3-3) dma) (new 'static 'dma-tag :qwc #xc :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a3-3) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) - (set! (-> (the-as dma-packet a3-3) vif1) (new 'static 'vif-tag :imm #xc :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a2-3 base) (&+ (the-as pointer a3-3) 16)) - ) - (let* ((a2-4 arg0) - (a3-5 (the-as object (-> a2-4 base))) - ) - (set! (-> (the-as gs-gif-tag a3-5) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #xb)) - (set! (-> (the-as gs-gif-tag a3-5) regs) GIF_REGS_ALL_AD) - (set! (-> a2-4 base) (&+ (the-as pointer a3-5) 16)) - ) - (let* ((a2-5 arg0) - (a3-7 (-> a2-5 base)) - ) - (set! (-> (the-as (pointer gs-xy-offset) a3-7) 0) (new 'static 'gs-xy-offset)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 1) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-frame) a3-7) 2) - (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp s1-0) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 3) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-scissor) a3-7) 4) - (new 'static 'gs-scissor :scax1 (+ s5-1 -1) :scay1 (+ s4-3 -1)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 5) (gs-reg64 scissor-1)) - (set! (-> (the-as (pointer gs-test) a3-7) 6) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 7) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a3-7) 8) (new 'static 'gs-alpha :a #x2 :b #x2 :c #x2 :fix #x80)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 9) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a3-7) 10) - (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 s2-5) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 11) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) a3-7) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 13) (gs-reg64 fba-1)) - (set! (-> (the-as (pointer gs-texa) a3-7) 14) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 15) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-tex1) a3-7) 16) (new 'static 'gs-tex1 :lcm #x1)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 17) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) a3-7) 18) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-7) 19) (gs-reg64 texflush)) - (set! (-> (the-as (pointer gs-prim) a3-7) 20) - (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a3-7) 21) (gs-reg64 prim)) - (set! (-> a2-5 base) (&+ a3-7 176)) - ) + (dma-buffer-add-gs-set-flusha arg0 + (xyoffset-1 (new 'static 'gs-xy-offset)) + (frame-1 (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp s1-0)) + (scissor-1 (new 'static 'gs-scissor :scax1 (+ s5-1 -1) :scay1 (+ s4-3 -1))) + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :a #x2 :b #x2 :c #x2 :fix #x80)) + (tex0-1 (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 s2-5)) + (fba-1 0) + (texa (new 'static 'gs-texa :ta1 #x80)) + (tex1-1 (new 'static 'gs-tex1 :lcm #x1)) + (texflush 0) + (prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1)) + ) (let ((a2-6 s4-3)) (dotimes (a3-9 (/ s5-1 16)) - (let* ((t0-38 arg0) - (t1-19 (the-as object (-> t0-38 base))) - ) - (set! (-> (the-as dma-packet t1-19) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t1-19) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet t1-19) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-38 base) (&+ (the-as pointer t1-19) 16)) - ) - (let* ((t0-39 arg0) - (t1-21 (the-as object (-> t0-39 base))) - ) - (set! (-> (the-as gs-gif-tag t1-21) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag t1-21) regs) GIF_REGS_ALL_AD) - (set! (-> t0-39 base) (&+ (the-as pointer t1-21) 16)) - ) - (let* ((t0-40 arg0) - (t1-23 (-> t0-40 base)) - ) - (set! (-> (the-as (pointer gs-xyz) t1-23) 0) (new 'static 'gs-xyz :y #x8 :x (+ (* a3-9 256) 8))) - (set! (-> (the-as (pointer gs-reg64) t1-23) 1) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) t1-23) 2) (new 'static 'gs-xyz :x (+ (* a3-9 256) 128))) - (set! (-> (the-as (pointer gs-reg64) t1-23) 3) (gs-reg64 xyz2)) - (set! (-> (the-as (pointer gs-xyz) t1-23) 4) - (new 'static 'gs-xyz :x (+ (* a3-9 256) 136) :y (+ (* a2-6 16) 8)) - ) - (set! (-> (the-as (pointer gs-reg64) t1-23) 5) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) t1-23) 6) (new 'static 'gs-xyz :y (* a2-6 16) :x (+ (* a3-9 256) 256))) - (set! (-> (the-as (pointer gs-reg64) t1-23) 7) (gs-reg64 xyz2)) - (set! (-> t0-40 base) (&+ t1-23 64)) - ) + (dma-buffer-add-gs-set arg0 + (uv (new 'static 'gs-uv :v #x8 :u (+ (* a3-9 256) 8))) + (xyz2 (shr (shl (+ (* a3-9 256) 128) 48) 48)) + (uv (new 'static 'gs-uv :u (+ (* a3-9 256) 136) :v (+ (* a2-6 16) 8))) + (xyz2 (logior (shr (shl (+ (* a3-9 256) 256) 48) 48) (shr (shl (* a2-6 16) 48) 32))) + ) ) ) (let ((t0-42 (/ s5-1 64))) - (let* ((a2-9 arg0) - (a3-10 (the-as object (-> a2-9 base))) - ) - (set! (-> (the-as dma-packet a3-10) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a3-10) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a3-10) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a2-9 base) (&+ (the-as pointer a3-10) 16)) - ) - (let* ((a2-10 arg0) - (a3-12 (the-as object (-> a2-10 base))) - ) - (set! (-> (the-as gs-gif-tag a3-12) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a3-12) regs) GIF_REGS_ALL_AD) - (set! (-> a2-10 base) (&+ (the-as pointer a3-12) 16)) - ) - (let* ((a2-11 arg0) - (a3-14 (-> a2-11 base)) - ) - (set! (-> (the-as (pointer gs-frame) a3-14) 0) - (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp (+ s1-0 t0-42)) - ) - (set! (-> (the-as (pointer gs-reg64) a3-14) 1) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-tex0) a3-14) 2) - (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 (+ s2-5 (* t0-42 32))) - ) - (set! (-> (the-as (pointer gs-reg64) a3-14) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-prim) a3-14) 4) - (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a3-14) 5) (gs-reg64 prim)) - (set! (-> a2-11 base) (&+ a3-14 48)) - ) + (dma-buffer-add-gs-set arg0 + (frame-1 (new 'static 'gs-frame :psm (gs-psm ct16) :fbmsk a1-55 :fbw a0-69 :fbp (+ s1-0 t0-42))) + (tex0-1 + (new 'static 'gs-tex0 :psm #x2 :tcc #x1 :tfx #x1 :th v1-66 :tw s3-3 :tbw a0-69 :tbp0 (+ s2-5 (* t0-42 32))) + ) + (prim (new 'static 'gs-prim :prim (gs-prim-type sprite) :tme #x1 :abe #x1 :fst #x1)) + ) ) ) (dotimes (v1-73 (/ s5-1 16)) - (let* ((a0-74 arg0) - (a1-63 (the-as object (-> a0-74 base))) - ) - (set! (-> (the-as dma-packet a1-63) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a1-63) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a1-63) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-74 base) (&+ (the-as pointer a1-63) 16)) - ) - (let* ((a0-75 arg0) - (a1-65 (the-as object (-> a0-75 base))) - ) - (set! (-> (the-as gs-gif-tag a1-65) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a1-65) regs) GIF_REGS_ALL_AD) - (set! (-> a0-75 base) (&+ (the-as pointer a1-65) 16)) - ) - (let* ((a0-76 arg0) - (a1-67 (-> a0-76 base)) - ) - (set! (-> (the-as (pointer gs-xyz) a1-67) 0) (new 'static 'gs-xyz :y #x8 :x (+ (* v1-73 256) 8))) - (set! (-> (the-as (pointer gs-reg64) a1-67) 1) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) a1-67) 2) (new 'static 'gs-xyz :x (+ (* v1-73 256) 128))) - (set! (-> (the-as (pointer gs-reg64) a1-67) 3) (gs-reg64 xyz2)) - (set! (-> (the-as (pointer gs-xyz) a1-67) 4) - (new 'static 'gs-xyz :x (+ (* v1-73 256) 136) :y (+ (* s4-3 16) 8)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-67) 5) (gs-reg64 uv)) - (set! (-> (the-as (pointer gs-xyz) a1-67) 6) (new 'static 'gs-xyz :y (* s4-3 16) :x (+ (* v1-73 256) 256))) - (set! (-> (the-as (pointer gs-reg64) a1-67) 7) (gs-reg64 xyz2)) - (set! (-> a0-76 base) (&+ a1-67 64)) - ) + (dma-buffer-add-gs-set arg0 + (uv (new 'static 'gs-uv :v #x8 :u (+ (* v1-73 256) 8))) + (xyz2 (shr (shl (+ (* v1-73 256) 128) 48) 48)) + (uv (new 'static 'gs-uv :u (+ (* v1-73 256) 136) :v (+ (* s4-3 16) 8))) + (xyz2 (logior (shr (shl (+ (* v1-73 256) 256) 48) 48) (shr (shl (* s4-3 16) 48) 32))) + ) ) ) 0 - (none) ) ;; definition for method 82 of type ocean ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 11 (defmethod draw-envmap-debug ocean ((obj ocean) (arg0 dma-buffer)) (format *stdcon* "draw-envmap-debug~%") (-> arg0 base) - (let* ((v1-1 arg0) - (a0-2 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer a0-2) 16)) - ) - (let* ((v1-2 arg0) - (a0-4 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 4) - (new 'static 'gs-tex0 - :tbw #x1 - :tcc #x1 - :th (log2 64) - :tw (log2 64) - :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x1 + :tcc #x1 + :th (log2 64) + :tw (log2 64) + :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((v1-20 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-20 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-20 1 quad) (-> obj sprite-tmpl quad 1)) @@ -915,44 +520,16 @@ (set-vector! (-> v1-20 6) #x7f60 #x8400 #xffffff 0) ) (&+! (-> arg0 base) 112) - (let* ((v1-24 arg0) - (a0-22 (the-as object (-> v1-24 base))) - ) - (set! (-> (the-as dma-packet a0-22) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-22) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-22) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-24 base) (&+ (the-as pointer a0-22) 16)) - ) - (let* ((v1-25 arg0) - (a0-24 (the-as object (-> v1-25 base))) - ) - (set! (-> (the-as gs-gif-tag a0-24) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-24) regs) GIF_REGS_ALL_AD) - (set! (-> v1-25 base) (&+ (the-as pointer a0-24) 16)) - ) - (let* ((s4-1 arg0) - (s3-1 (-> s4-1 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-1) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s3-1) 2) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-1) 4) - (new 'static 'gs-tex0 :tbw #x1 :th (log2 64) :tw (log2 64) :tbp0 (-> *ocean-envmap-texture-base* vram-block)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-1) 6) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-1) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-1) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s3-1) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-1) 11) (gs-reg64 texflush)) - (set! (-> s4-1 base) (&+ s3-1 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha)) + (tex0-1 + (new 'static 'gs-tex0 :tbw #x1 :th (log2 64) :tw (log2 64) :tbp0 (-> *ocean-envmap-texture-base* vram-block)) + ) + (tex1-1 (new 'static 'gs-tex1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((v1-44 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-44 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-44 1 quad) (-> obj sprite-tmpl quad 1)) @@ -970,50 +547,26 @@ ;; definition for method 83 of type ocean ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 14 (defmethod ocean-method-83 ocean ((obj ocean) (arg0 dma-buffer) (arg1 float)) (let* ((s4-0 64) (s3-0 0) (f30-0 (/ -65536.0 (the float s4-0))) (f28-0 arg1) ) - (let* ((v1-1 arg0) - (a0-1 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-2 arg0) - (a0-3 (the-as object (-> v1-2 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((s2-0 arg0) - (s1-0 (-> s2-0 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s1-0) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s1-0) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s1-0) 2) - (new 'static 'gs-tex0 - :tbw #x1 - :tcc #x1 - :th (log2 64) - :tw (log2 64) - :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s1-0) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-clamp) s1-0) 4) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s1-0) 5) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s1-0) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s1-0) 7) (gs-reg64 texflush)) - (set! (-> s2-0 base) (&+ s1-0 64)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x1 + :tcc #x1 + :th (log2 64) + :tw (log2 64) + :tbp0 (+ (-> *ocean-texture-base* vram-block) 256) + ) + ) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((v1-16 (-> arg0 base))) (set! (-> (the-as (pointer uint128) v1-16)) (-> obj line-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-16) 1) (-> obj line-tmpl quad 1)) @@ -1087,30 +640,10 @@ ;; definition for method 85 of type ocean ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 6 (defmethod ocean-method-85 ocean ((obj ocean) (arg0 dma-buffer)) (local-vars (sv-48 vector4w) (sv-64 vector4w)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x2 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1))) (let ((v1-3 (-> arg0 base))) (set! (-> (the-as (pointer uint128) v1-3)) (-> obj haze-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-3) 1) (-> obj haze-tmpl quad 1)) @@ -1261,58 +794,35 @@ ;; definition for method 88 of type ocean ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 6 (defmethod ocean-method-88 ocean ((obj ocean) (arg0 dma-buffer)) (local-vars (sv-48 vector) (sv-64 uint) (sv-80 vector) (sv-96 vector) (sv-112 vector)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x50 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 2) (new 'static 'gs-tex0 - :tbp0 #x100 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x300 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 6) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x50 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (tex0-1 (new 'static 'gs-tex0 + :tbp0 #x100 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x300 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) (let* ((v1-17 *sky-work*) (f0-1 (* 0.000015258789 (the float (-> v1-17 off-s)))) (f1-3 (* 0.000015258789 (the float (-> v1-17 off-t)))) @@ -1420,39 +930,17 @@ ;; definition for method 89 of type ocean ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-4 8) 0) at op 40 (defmethod ocean-method-89 ocean ((obj ocean) (arg0 dma-buffer)) (set-display-gs-state arg0 (the-as int (+ (-> *ocean-texture-base* vram-page) 8)) 64 64 0 0) (vector-float*! (-> obj sky-color) (-> *time-of-day-context* current-sky-color) 0.25) (+! (-> obj sky-color x) (* 0.5 (- (-> obj sky-color z) (-> obj sky-color x)))) (+! (-> obj sky-color y) (* 0.5 (- (-> obj sky-color z) (-> obj sky-color y)))) - (let* ((v1-6 arg0) - (a0-4 (the-as object (-> v1-6 base))) - ) - (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-6 base) (&+ (the-as pointer a0-4) 16)) - ) - (let* ((v1-7 arg0) - (a0-6 (the-as object (-> v1-7 base))) - ) - (set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD) - (set! (-> v1-7 base) (&+ (the-as pointer a0-6) 16)) - ) - (let* ((v1-8 arg0) - (a0-8 (-> v1-8 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-8) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-8) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) a0-8) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 5) (gs-reg64 texflush)) - (set! (-> v1-8 base) (&+ a0-8 48)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) (let ((v1-9 (the-as object (-> arg0 base)))) (let ((a1-13 (-> obj sky-color))) (set! (-> (the-as (inline-array vector4w) v1-9) 0 quad) (-> obj sprite-tmpl2 dma-vif quad)) @@ -1479,32 +967,11 @@ ) ) (&+! (-> arg0 base) 80) - (let* ((v1-13 arg0) - (a0-17 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as dma-packet a0-17) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-17) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-17) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (&+ (the-as pointer a0-17) 16)) - ) - (let* ((v1-14 arg0) - (a0-19 (the-as object (-> v1-14 base))) - ) - (set! (-> (the-as gs-gif-tag a0-19) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-19) regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (&+ (the-as pointer a0-19) 16)) - ) - (let* ((v1-15 arg0) - (a0-21 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-xy-offset) a0-21) 0) (new 'static 'gs-xy-offset :ofx #x200 :ofy #x200)) - (set! (-> (the-as (pointer gs-reg64) a0-21) 1) (gs-reg64 xyoffset-1)) - (set! (-> (the-as (pointer gs-texa) a0-21) 2) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-21) 3) (gs-reg64 texa)) - (set! (-> (the-as (pointer uint64) a0-21) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-21) 5) (gs-reg64 texflush)) - (set! (-> v1-15 base) (&+ a0-21 48)) - ) + (dma-buffer-add-gs-set arg0 + (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x200 :ofy #x200)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texflush 0) + ) (let ((v1-16 (the-as adgif-shader (-> arg0 base)))) (set! (-> v1-16 quad 0 quad) (-> obj adgif-tmpl dma-vif quad)) (set! (-> v1-16 quad 1 quad) (-> obj adgif-tmpl quad 1)) @@ -1566,72 +1033,22 @@ (ocean-method-88 obj arg0) (set-display-gs-state arg0 (the-as int (-> *ocean-envmap-texture-base* vram-page)) 64 64 0 0) (ocean-method-83 obj arg0 32768.0) - (let* ((v1-44 arg0) - (a0-44 (the-as object (-> v1-44 base))) - ) - (set! (-> (the-as dma-packet a0-44) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-44) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-44) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-44 base) (&+ (the-as pointer a0-44) 16)) - ) - (let* ((v1-45 arg0) - (a0-46 (the-as object (-> v1-45 base))) - ) - (set! (-> (the-as gs-gif-tag a0-46) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a0-46) regs) GIF_REGS_ALL_AD) - (set! (-> v1-45 base) (&+ (the-as pointer a0-46) 16)) - ) - (let* ((s4-4 arg0) - (s3-2 (-> s4-4 base)) - ) - (set! (-> (the-as (pointer gs-alpha) s3-2) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s3-2) 2) - (new 'static 'gs-tex0 - :tbw #x1 - :tcc #x1 - :th (log2 32) - :tw (log2 64) - :tbp0 (-> *ocean-envmap-texture-base* vram-block) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-2) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-2) 6) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s3-2) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-rgbaq) s3-2) 8) (new 'static 'gs-rgbaq :r #x80 :g #x80 :b #x80 :a #x80 :q 1.0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 9) (gs-reg64 rgbaq)) - (set! (-> (the-as (pointer uint64) s3-2) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-2) 11) (gs-reg64 texflush)) - (set! (-> s4-4 base) (&+ s3-2 96)) - ) - (let* ((v1-63 arg0) - (a0-54 (the-as object (-> v1-63 base))) - ) - (set! (-> (the-as dma-packet a0-54) dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-54) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-54) vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-63 base) (&+ (the-as pointer a0-54) 16)) - ) - (let* ((v1-64 arg0) - (a0-56 (the-as object (-> v1-64 base))) - ) - (set! (-> (the-as gs-gif-tag a0-56) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> (the-as gs-gif-tag a0-56) regs) GIF_REGS_ALL_AD) - (set! (-> v1-64 base) (&+ (the-as pointer a0-56) 16)) - ) - (let* ((v1-65 arg0) - (a0-58 (-> v1-65 base)) - ) - (set! (-> (the-as (pointer gs-tex1) a0-58) 0) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-58) 1) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer uint64) a0-58) 2) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-58) 3) (gs-reg64 texflush)) - (set! (-> v1-65 base) (&+ a0-58 32)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x1 + :tcc #x1 + :th (log2 32) + :tw (log2 64) + :tbp0 (-> *ocean-envmap-texture-base* vram-block) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (rgbaq (new 'static 'gs-rgbaq :r #x80 :g #x80 :b #x80 :a #x80 :q 1.0)) + (texflush 0) + ) + (dma-buffer-add-gs-set arg0 (tex1-1 (new 'static 'gs-tex1)) (texflush 0)) (let ((v1-66 (the-as (inline-array vector4w) (-> arg0 base)))) (set! (-> v1-66 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-66 1 quad) (-> obj sprite-tmpl quad 1)) @@ -1964,3 +1381,7 @@ v0-0 ) ) + + + + diff --git a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean_REF.gc b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean_REF.gc index 66540de901..cd1866537a 100644 --- a/test/decompiler/reference/jak2/engine/gfx/ocean/ocean_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/ocean/ocean_REF.gc @@ -1114,83 +1114,29 @@ ) ;; definition for method 19 of type ocean +;; WARN: Return type mismatch pointer vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 5 (defmethod init-buffer! ocean ((obj ocean) (arg0 dma-buffer)) - "Initialize [[ocean]] DMA buffer. -@returns Pointer to the next DMA buffer" - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((s5-0 arg0) - (s4-0 (-> s5-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s4-0) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) s4-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s4-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s4-0) 4) - (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :th (log2 128) :tw (log2 128)) - ) - (set! (-> (the-as (pointer gs-reg64) s4-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s4-0) 6) (-> obj tex1)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) s4-0) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 9) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-miptbp) s4-0) 10) - (new 'static 'gs-miptbp :tbp1 #x6a0 :tbw1 #x1 :tbp2 #x7a0 :tbp3 #x7e0) - ) - (set! (-> (the-as (pointer gs-reg64) s4-0) 11) (gs-reg64 miptbp1-1)) - (set! (-> (the-as (pointer gs-miptbp) s4-0) 12) (new 'static 'gs-miptbp :tbp1 #x800 :tbp2 #x820 :tbp3 #x840)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 13) (gs-reg64 miptbp2-1)) - (set! (-> (the-as (pointer gs-clamp) s4-0) 14) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 15) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-fogcol) s4-0) 16) (the-as gs-fogcol *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) s4-0) 17) (gs-reg64 fogcol)) - (let ((v0-2 (&+ s4-0 144))) - (set! (-> s5-0 base) v0-2) - v0-2 - ) - ) + "Initialize [[ocean]] DMA buffer." + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :th (log2 128) :tw (log2 128))) + (tex1-1 (-> obj tex1)) + (texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80)) + (miptbp1-1 (new 'static 'gs-miptbp :tbp1 #x6a0 :tbw1 #x1 :tbp2 #x7a0 :tbp3 #x7e0)) + (miptbp2-1 (new 'static 'gs-miptbp :tbp1 #x800 :tbp2 #x820 :tbp3 #x840)) + (clamp-1 (new 'static 'gs-clamp)) + (fogcol *fog-color*) + ) + (none) ) ;; definition for method 20 of type ocean ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 4 (defmethod end-buffer! ocean ((obj ocean) (arg0 dma-buffer)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-texa) a0-5) 0) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 texa)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 (texa (new 'static 'gs-texa :ta1 #x80))) 0 (none) ) @@ -1613,7 +1559,3 @@ ;; definition (debug) for function test-to-from-spr ;; ERROR: function was not converted to expressions. Cannot decompile. - - - - diff --git a/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc b/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc index 051047ff4e..96c569f5a1 100644 --- a/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/shrub/shrubbery_REF.gc @@ -672,36 +672,9 @@ s2-2 (the-as int (-> *instance-shrub-work* start-bank (-> (the-as prototype-bucket-shrub s1-0) mod-count 1))) ) - (when (zero? sv-80) - (let* ((v1-94 s2-2) - (a0-36 (-> v1-94 base)) - ) - (set! (-> (the-as (pointer int64) a0-36)) #x10000002) - (s.w! (+ a0-36 8) 0) - (let ((a1-44 #x50000002)) - (s.w! (+ a0-36 12) a1-44) - ) - (set! (-> v1-94 base) (&+ a0-36 16)) + (if (zero? sv-80) + (dma-buffer-add-gs-set s2-2 (test-1 sv-48)) ) - (let* ((v1-95 s2-2) - (a0-38 (-> v1-95 base)) - ) - (set! (-> (the-as (pointer uint64) a0-38)) (make-u128 0 (the-as uint #x1000000000008001))) - (let ((a1-47 (the-as uint #xeeeeeeeeeeeeeeee))) - (s.d! (+ a0-38 8) a1-47) - ) - (set! (-> v1-95 base) (&+ a0-38 16)) - ) - (let* ((v1-96 s2-2) - (a0-40 (-> v1-96 base)) - ) - (set! (-> (the-as (pointer int64) a0-40)) sv-48) - (let ((a1-49 71)) - (s.d! (+ a0-40 8) a1-49) - ) - (set! (-> v1-96 base) (&+ a0-40 16)) - ) - ) (let* ((v1-97 s2-2) (a0-42 (-> v1-97 base)) ) @@ -869,34 +842,16 @@ (v1-168 (-> *display* frames (-> *display* on-screen) global-buf)) (a2-70 (-> v1-168 base)) ) - (let* ((a0-68 v1-168) - (a1-84 (-> a0-68 base)) - ) - (set! (-> (the-as (pointer int64) a1-84)) #x10000002) - (s.w! (+ a1-84 8) 0) - (let ((a3-35 #x50000002)) - (s.w! (+ a1-84 12) a3-35) - ) - (set! (-> a0-68 base) (&+ a1-84 16)) - ) - (let* ((a0-69 v1-168) - (a1-86 (-> a0-69 base)) - ) - (set! (-> (the-as (pointer uint64) a1-86)) (make-u128 0 (the-as uint #x1000000000008001))) - (let ((a3-38 (the-as uint #xeeeeeeeeeeeeeeee))) - (s.d! (+ a1-86 8) a3-38) - ) - (set! (-> a0-69 base) (&+ a1-86 16)) - ) - (let* ((a0-70 v1-168) - (a1-88 (-> a0-70 base)) - ) - (set! (-> (the-as (pointer int64) a1-88)) #x5180b) - (let ((a3-40 71)) - (s.d! (+ a1-88 8) a3-40) - ) - (set! (-> a0-70 base) (&+ a1-88 16)) - ) + (dma-buffer-add-gs-set v1-168 (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x80 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + ) (let ((a0-71 (-> v1-168 base))) (while (nonzero? proto-array-len) (+! proto-array-len -1) diff --git a/test/decompiler/reference/jak2/engine/gfx/sky/sky-tng_REF.gc b/test/decompiler/reference/jak2/engine/gfx/sky/sky-tng_REF.gc index 40bd964b8e..468edff323 100644 --- a/test/decompiler/reference/jak2/engine/gfx/sky/sky-tng_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/sky/sky-tng_REF.gc @@ -309,56 +309,32 @@ (rlet ((vf23 :class vf) (vf27 :class vf) ) - (let* ((v1-0 arg0) - (a0-1 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a0-3 16))) - ) - (let* ((s4-0 arg0) - (s3-0 (-> s4-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s3-0) 0) (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x50 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-tex0) s3-0) 2) (new 'static 'gs-tex0 - :tbp0 #x100 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x300 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s3-0) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s3-0) 6) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s3-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush)) - (set! (-> s4-0 base) (&+ s3-0 96)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x50 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (tex0-1 (new 'static 'gs-tex0 + :tbp0 #x100 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x300 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) (.lvf vf27 (&-> obj giftag-roof quad)) (let ((v1-18 #x43c80000)) (.mov vf23 v1-18) @@ -495,28 +471,7 @@ (defmethod draw-haze sky-work ((obj sky-work) (arg0 dma-buffer)) (local-vars (sv-16 haze-vert-array) (sv-20 (inline-array sky-vertex))) (rlet ((vf27 :class vf)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set arg0 (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))) (init-regs-for-large-polygon-draw obj) (.lvf vf27 (&-> obj giftag-haze quad)) (let ((s4-0 (the-as object (-> arg0 base)))) @@ -593,34 +548,11 @@ ;; WARN: Return type mismatch int vs none. (defmethod draw-roof sky-work ((obj sky-work) (arg0 dma-buffer)) (rlet ((vf27 :class vf)) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a0-5) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-5) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a0-5) 4) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a0-5 48)) - ) + (dma-buffer-add-gs-set arg0 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) (init-regs-for-large-polygon-draw obj) (.lvf vf27 (&-> obj giftag-base quad)) (let ((s5-1 (the-as object (-> arg0 base)))) @@ -645,30 +577,9 @@ ;; WARN: Return type mismatch int vs none. (defmethod draw-base sky-work ((obj sky-work) (arg0 dma-buffer)) (rlet ((vf27 :class vf)) - (let* ((v1-0 arg0) - (a1-1 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a1-1 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a1-1 vif0) (new 'static 'vif-tag)) - (set! (-> a1-1 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a1-1 16))) - ) - (let* ((v1-1 arg0) - (a1-3 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a1-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a1-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a1-3 16))) - ) - (let* ((v1-2 arg0) - (a1-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-test) a1-5) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-5) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a1-5 16)) - ) + (dma-buffer-add-gs-set arg0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + ) (let ((s5-0 (the-as object (-> arg0 base)))) (&+! (-> arg0 base) 16) (.lvf vf27 (&-> obj giftag-base quad)) @@ -693,61 +604,34 @@ ;; WARN: Return type mismatch int vs none. (defmethod draw-fog sky-work ((obj sky-work) (arg0 dma-buffer)) (let ((s4-0 (-> *sky-texture-anim-array* array-data 8 tex))) - (when s4-0 - (let* ((v1-3 arg0) - (a0-1 (the-as dma-packet (-> v1-3 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (the-as pointer (&+ a0-1 16))) + (if s4-0 + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 + :tcc #x1 + :cld #x1 + :psm (the-as int (-> s4-0 psm)) + :cpsm (-> s4-0 clutpsm) + :cbp (-> s4-0 clutdest) + :th (log2 (-> s4-0 h)) + :tw (log2 (-> s4-0 w)) + :tbw (-> s4-0 width 0) + :tbp0 (-> s4-0 dest 0) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x70 + :afail #x3 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) ) - (let* ((v1-4 arg0) - (a0-3 (the-as gs-gif-tag (-> v1-4 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-4 base) (the-as pointer (the-as gs-gif-tag (&+ a0-3 16)))) - ) - (let* ((s3-0 arg0) - (s2-0 (-> s3-0 base)) - ) - (set! (-> (the-as (pointer gs-tex0) s2-0) 0) - (new 'static 'gs-tex0 - :tcc #x1 - :cld #x1 - :psm (the-as int (-> s4-0 psm)) - :cpsm (-> s4-0 clutpsm) - :cbp (-> s4-0 clutdest) - :th (log2 (-> s4-0 h)) - :tw (log2 (-> s4-0 w)) - :tbw (-> s4-0 width 0) - :tbp0 (-> s4-0 dest 0) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s2-0) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-test) s2-0) 4) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x70 - :afail #x3 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-clamp) s2-0) 6) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s2-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 alpha-1)) - (set! (-> s3-0 base) (&+ s2-0 80)) - ) - ) ) (let* ((v1-26 (the-as (inline-array qword) (-> arg0 base))) (f0-0 (-> *fog-texture-work* min-corner y)) @@ -814,9 +698,9 @@ (if (nonzero? (-> (the-as sky-work s4-0) star-colors 0 x)) (stars-transform-asm (the-as sky-work s4-0)) ) - (let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (s5-1 (-> s3-0 base)) - ) + (with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id sky-draw) + ) (draw-roof (the-as sky-work s4-0) s3-0) (init-regs-for-sky-asm (the-as sky-work s4-0)) (if (nonzero? (-> (the-as sky-work s4-0) star-colors 0 x)) @@ -829,20 +713,6 @@ (draw-clouds (the-as sky-work s4-0) s3-0) (draw-base (the-as sky-work s4-0) s3-0) (draw-fog (the-as sky-work s4-0) s3-0) - (let ((a3-5 (-> s3-0 base))) - (let ((v1-45 (the-as dma-packet (-> s3-0 base)))) - (set! (-> v1-45 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-45 vif0) (new 'static 'vif-tag)) - (set! (-> v1-45 vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (the-as pointer (&+ v1-45 16))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id sky-draw) - s5-1 - (the-as (pointer dma-tag) a3-5) - ) - ) ) ) (let ((v1-52 *dma-mem-usage*)) @@ -859,52 +729,21 @@ ) ) (else - (let* ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf)) - (gp-1 (-> s4-1 base)) - ) + (with-dma-buffer-add-bucket ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id sky-draw) + ) (cond ((-> *blit-displays-work* menu-mode) (let ((f0-0 (-> *blit-displays-work* progress-interp))) - (let* ((a0-43 s4-1) - (a1-30 (the-as dma-packet (-> a0-43 base))) - ) - (set! (-> a1-30 dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt))) - (set! (-> a1-30 vif0) (new 'static 'vif-tag)) - (set! (-> a1-30 vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-43 base) (the-as pointer (&+ a1-30 16))) - ) - (let* ((a0-44 s4-1) - (a1-32 (the-as gs-gif-tag (-> a0-44 base))) - ) - (set! (-> a1-32 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7)) - (set! (-> a1-32 regs) GIF_REGS_ALL_AD) - (set! (-> a0-44 base) (the-as pointer (&+ a1-32 16))) - ) - (let* ((a0-45 s4-1) - (a1-34 (-> a0-45 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a1-34) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a1-34) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a1-34) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-34) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a1-34) 4) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) a1-34) 5) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a1-34) 6) - (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a1-34) 7) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a1-34) 8) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-34) 9) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) a1-34) 10) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-34) 11) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) a1-34) 12) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a1-34) 13) (gs-reg64 texflush)) - (set! (-> a0-45 base) (&+ a1-34 112)) - ) + (dma-buffer-add-gs-set s4-1 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((a2-40 (the-as (inline-array qword) (-> s4-1 base))) (a3-7 #x7000) (t0-1 #x7300) @@ -934,34 +773,11 @@ (set-vector! (-> t0-4 5 vector4w) 8200 6664 0 0) (set-vector! (-> t0-4 6 vector4w) a0-49 a1-37 0 0) (&+! (-> s4-1 base) 112) - (let* ((t0-8 s4-1) - (t1-11 (the-as dma-packet (-> t0-8 base))) - ) - (set! (-> t1-11 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> t1-11 vif0) (new 'static 'vif-tag)) - (set! (-> t1-11 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t0-8 base) (the-as pointer (&+ t1-11 16))) - ) - (let* ((t0-9 s4-1) - (t1-13 (the-as gs-gif-tag (-> t0-9 base))) - ) - (set! (-> t1-13 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> t1-13 regs) GIF_REGS_ALL_AD) - (set! (-> t0-9 base) (the-as pointer (&+ t1-13 16))) - ) - (let* ((t0-10 s4-1) - (t1-15 (-> t0-10 base)) - ) - (set! (-> (the-as (pointer gs-alpha) t1-15) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) t1-15) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) t1-15) 2) - (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1) - ) - (set! (-> (the-as (pointer gs-reg64) t1-15) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) t1-15) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) t1-15) 5) (gs-reg64 texflush)) - (set! (-> t0-10 base) (&+ t1-15 48)) - ) + (dma-buffer-add-gs-set s4-1 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)) + (texflush 0) + ) (let ((t0-11 (the-as (inline-array qword) (-> s4-1 base)))) (set! (-> t0-11 0 quad) (-> obj draw-tmpl2 dma-vif quad)) (set! (-> t0-11 1 quad) (-> obj draw-tmpl2 quad 1)) @@ -973,28 +789,7 @@ ) ) (&+! (-> s4-1 base) 112) - (let* ((a0-52 s4-1) - (a1-38 (the-as dma-packet (-> a0-52 base))) - ) - (set! (-> a1-38 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a1-38 vif0) (new 'static 'vif-tag)) - (set! (-> a1-38 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-52 base) (the-as pointer (&+ a1-38 16))) - ) - (let* ((a0-53 s4-1) - (a1-40 (the-as gs-gif-tag (-> a0-53 base))) - ) - (set! (-> a1-40 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a1-40 regs) GIF_REGS_ALL_AD) - (set! (-> a0-53 base) (the-as pointer (&+ a1-40 16))) - ) - (let* ((a0-54 s4-1) - (a1-42 (-> a0-54 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a1-42) 0) (new 'static 'gs-alpha)) - (set! (-> (the-as (pointer gs-reg64) a1-42) 1) (gs-reg64 alpha-1)) - (set! (-> a0-54 base) (&+ a1-42 16)) - ) + (dma-buffer-add-gs-set s4-1 (alpha-1 (new 'static 'gs-alpha))) (let ((a0-57 (the int (+ 128.0 (* 32.0 f0-0)))) (a1-46 (the int (- 128.0 (* 16.0 f0-0)))) (a2-55 (the int (- 128.0 (* 96.0 f0-0)))) @@ -1027,34 +822,11 @@ (&+! (-> s4-1 base) 112) ) ) - (let* ((v1-60 s4-1) - (a3-17 (the-as dma-packet (-> v1-60 base))) - ) - (set! (-> a3-17 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a3-17 vif0) (new 'static 'vif-tag)) - (set! (-> a3-17 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-60 base) (the-as pointer (&+ a3-17 16))) - ) - (let* ((v1-61 s4-1) - (a3-19 (the-as gs-gif-tag (-> v1-61 base))) - ) - (set! (-> a3-19 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a3-19 regs) GIF_REGS_ALL_AD) - (set! (-> v1-61 base) (the-as pointer (&+ a3-19 16))) - ) - (let* ((v1-62 s4-1) - (a3-21 (-> v1-62 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a3-21) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a3-21) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a3-21) 2) - (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a3-21) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer uint64) a3-21) 4) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a3-21) 5) (gs-reg64 texflush)) - (set! (-> v1-62 base) (&+ a3-21 48)) - ) + (dma-buffer-add-gs-set s4-1 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)) + (texflush 0) + ) (let ((v1-63 (the-as (inline-array qword) (-> s4-1 base)))) (set! (-> v1-63 0 quad) (-> obj draw-tmpl2 dma-vif quad)) (set! (-> v1-63 1 quad) (-> obj draw-tmpl2 quad 1)) @@ -1074,41 +846,18 @@ ) ) (else - (let* ((a0-66 s4-1) - (a1-53 (the-as dma-packet (-> a0-66 base))) - ) - (set! (-> a1-53 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a1-53 vif0) (new 'static 'vif-tag)) - (set! (-> a1-53 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-66 base) (the-as pointer (&+ a1-53 16))) - ) - (let* ((a0-67 s4-1) - (a1-55 (the-as gs-gif-tag (-> a0-67 base))) - ) - (set! (-> a1-55 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a1-55 regs) GIF_REGS_ALL_AD) - (set! (-> a0-67 base) (the-as pointer (&+ a1-55 16))) - ) - (let* ((a0-68 s4-1) - (a1-57 (-> a0-68 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a1-57) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a1-57) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a1-57) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-57) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-rgbaq) a1-57) 4) (new 'static 'gs-rgbaq - :q 1.0 - :a (the int (-> v1-0 current-fog erase-color w)) - :b (the int (-> v1-0 current-fog erase-color z)) - :g (the int (-> v1-0 current-fog erase-color y)) - :r (the int (-> v1-0 current-fog erase-color x)) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a1-57) 5) (gs-reg64 rgbaq)) - (set! (-> a0-68 base) (&+ a1-57 48)) - ) + (dma-buffer-add-gs-set s4-1 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (rgbaq (new 'static 'gs-rgbaq + :q 1.0 + :a (the int (-> v1-0 current-fog erase-color w)) + :b (the int (-> v1-0 current-fog erase-color z)) + :g (the int (-> v1-0 current-fog erase-color y)) + :r (the int (-> v1-0 current-fog erase-color x)) + ) + ) + ) (let ((v1-78 (the-as (inline-array qword) (-> s4-1 base)))) (set! (-> v1-78 0 quad) (-> obj sprite-tmpl dma-vif quad)) (set! (-> v1-78 1 quad) (-> obj sprite-tmpl quad 1)) @@ -1121,20 +870,6 @@ (&+! (-> s4-1 base) 32) ) ) - (let ((a3-35 (-> s4-1 base))) - (let ((v1-85 (the-as dma-packet (-> s4-1 base)))) - (set! (-> v1-85 dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> v1-85 vif0) (new 'static 'vif-tag)) - (set! (-> v1-85 vif1) (new 'static 'vif-tag)) - (set! (-> s4-1 base) (the-as pointer (&+ v1-85 16))) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id sky-draw) - gp-1 - (the-as (pointer dma-tag) a3-35) - ) - ) ) ) ) diff --git a/test/decompiler/reference/jak2/engine/gfx/sprite/sprite-distort_REF.gc b/test/decompiler/reference/jak2/engine/gfx/sprite/sprite-distort_REF.gc index 5881fd883f..99ebf87659 100644 --- a/test/decompiler/reference/jak2/engine/gfx/sprite/sprite-distort_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/sprite/sprite-distort_REF.gc @@ -121,45 +121,22 @@ ;; definition for function sprite-init-distorter ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a1-0 8) 0) at op 4 (defun sprite-init-distorter ((dma-buff dma-buffer)) - (let* ((v1-0 dma-buff) - (a1-0 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16)) - ) - (let* ((v1-1 dma-buff) - (a1-2 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a1-2) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a1-2) 16)) - ) - (let* ((v1-2 dma-buff) - (a1-4 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-zbuf) a1-4) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-tex0) a1-4) 2) (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 3) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a1-4) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 5) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-miptbp) a1-4) 6) (new 'static 'gs-miptbp)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 7) (gs-reg64 miptbp1-1)) - (set! (-> (the-as (pointer gs-clamp) a1-4) 8) (new 'static 'gs-clamp - :wms (gs-tex-wrap-mode region-clamp) - :wmt (gs-tex-wrap-mode region-clamp) - :maxu #x1ff - :maxv #x19f - ) - ) - (set! (-> (the-as (pointer gs-reg64) a1-4) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) a1-4) 10) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-4) 11) (gs-reg64 alpha-1)) - (set! (-> v1-2 base) (&+ a1-4 96)) - ) + (dma-buffer-add-gs-set dma-buff + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (miptbp1-1 (new 'static 'gs-miptbp)) + (clamp-1 (new 'static 'gs-clamp + :wms (gs-tex-wrap-mode region-clamp) + :wmt (gs-tex-wrap-mode region-clamp) + :maxu #x1ff + :maxv #x19f + ) + ) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + ) (let* ((v1-3 dma-buff) (a1-6 (the-as object (-> v1-3 base))) ) diff --git a/test/decompiler/reference/jak2/engine/gfx/sprite/sprite_REF.gc b/test/decompiler/reference/jak2/engine/gfx/sprite/sprite_REF.gc index 3ebc0ef43d..7ccdb66e6f 100644 --- a/test/decompiler/reference/jak2/engine/gfx/sprite/sprite_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/sprite/sprite_REF.gc @@ -791,7 +791,7 @@ ;; definition for function sprite-draw ;; WARN: Return type mismatch int vs none. -;; ERROR: Failed store: (s.w! (+ v1-27 8) 0) at op 160 +;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 35 (defun sprite-draw ((disp display)) (let ((dma-mem-begin (-> *display* frames (-> *display* on-screen) global-buf base))) (with-dma-buffer-add-bucket ((dma-buff (-> *display* frames (-> *display* on-screen) global-buf)) @@ -801,90 +801,67 @@ (sprite-init-distorter dma-buff) (sprite-draw-distorters dma-buff) ) - (let ((v1-17 dma-buff)) - (let ((pkt1 (the-as dma-packet (-> v1-17 base)))) - (set! (-> pkt1 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> pkt1 vif0) (new 'static 'vif-tag)) - (set! (-> pkt1 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-17 base) (&+ (the-as pointer pkt1) 16)) - ) - ) - (let ((v1-18 dma-buff)) - (let ((giftag (the-as gs-gif-tag (-> v1-18 base)))) - (set! (-> giftag tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> giftag regs) GIF_REGS_ALL_AD) - (set! (-> v1-18 base) (the-as pointer (&+ giftag 16))) - ) - ) - (let ((v1-19 dma-buff)) - (let ((a0-10 (-> v1-19 base))) - (set! (-> (the-as (pointer gs-test) a0-10) 0) - (new 'static 'gs-test - :ate #x1 - :atst (gs-atest greater-equal) - :aref #x26 - :afail #x1 - :zte #x1 - :ztst (gs-ztest greater-equal) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-clamp) a0-10) 2) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 3) (gs-reg64 clamp-1)) - (set! (-> v1-19 base) (&+ a0-10 32)) - ) - ) + (dma-buffer-add-gs-set dma-buff + (test-1 (new 'static 'gs-test + :ate #x1 + :atst (gs-atest greater-equal) + :aref #x26 + :afail #x1 + :zte #x1 + :ztst (gs-ztest greater-equal) + ) + ) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + ) (dma-buffer-add-vu-function dma-buff sprite-vu1-block 1) (sprite-add-frame-data dma-buff (the-as uint 408)) - (let ((v1-20 dma-buff)) - (let ((pkt2 (the-as dma-packet (-> v1-20 base)))) - (set! (-> pkt2 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> pkt2 vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm #x0)) - (set! (-> pkt2 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) - (set! (-> v1-20 base) (&+ (the-as pointer pkt2) 16)) - ) + (let* ((v1-20 dma-buff) + (pkt2 (the-as dma-packet (-> v1-20 base))) + ) + (set! (-> pkt2 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> pkt2 vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm #x0)) + (set! (-> pkt2 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) + (set! (-> v1-20 base) (&+ (the-as pointer pkt2) 16)) ) - (let ((v1-21 dma-buff)) - (let ((pkt3 (the-as dma-packet (-> v1-21 base)))) - (set! (-> pkt3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> pkt3 vif0) (new 'static 'vif-tag :cmd (vif-cmd base))) - (set! (-> pkt3 vif1) (new 'static 'vif-tag :imm #x190 :cmd (vif-cmd offset))) - (set! (-> v1-21 base) (&+ (the-as pointer pkt3) 16)) - ) + (let* ((v1-21 dma-buff) + (pkt3 (the-as dma-packet (-> v1-21 base))) + ) + (set! (-> pkt3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> pkt3 vif0) (new 'static 'vif-tag :cmd (vif-cmd base))) + (set! (-> pkt3 vif1) (new 'static 'vif-tag :imm #x190 :cmd (vif-cmd offset))) + (set! (-> v1-21 base) (&+ (the-as pointer pkt3) 16)) ) (sprite-add-matrix-data dma-buff (the-as uint 0)) (sprite-add-3d-all *sprite-array-3d* dma-buff 0) (sprite-add-2d-all *sprite-array-2d* dma-buff 0) - (let ((v1-22 dma-buff)) - (let ((pkt4 (the-as dma-packet (-> v1-22 base)))) - (set! (-> pkt4 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> pkt4 vif0) (new 'static 'vif-tag)) - (set! (-> pkt4 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) - (set! (-> v1-22 base) (&+ (the-as pointer pkt4) 16)) - ) + (let* ((v1-22 dma-buff) + (pkt4 (the-as dma-packet (-> v1-22 base))) + ) + (set! (-> pkt4 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> pkt4 vif0) (new 'static 'vif-tag)) + (set! (-> pkt4 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) + (set! (-> v1-22 base) (&+ (the-as pointer pkt4) 16)) ) (sprite-add-matrix-data dma-buff (the-as uint 1)) (sprite-add-2d-all *sprite-array-2d* dma-buff 1) - (let ((v1-23 dma-buff)) - (let ((pkt5 (the-as dma-packet (-> v1-23 base)))) - (set! (-> pkt5 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> pkt5 vif0) (new 'static 'vif-tag)) - (set! (-> pkt5 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) - (set! (-> v1-23 base) (&+ (the-as pointer pkt5) 16)) - ) + (let* ((v1-23 dma-buff) + (pkt5 (the-as dma-packet (-> v1-23 base))) + ) + (set! (-> pkt5 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> pkt5 vif0) (new 'static 'vif-tag)) + (set! (-> pkt5 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) + (set! (-> v1-23 base) (&+ (the-as pointer pkt5) 16)) ) (sprite-glow-init-engine dma-buff) (sprite-glow-draw dma-buff) (draw-all-sprites! *simple-sprite-system* dma-buff) - (let ((v1-26 dma-buff)) - (let ((pkt6 (the-as dma-packet (-> v1-26 base)))) - (set! (-> pkt6 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) - (set! (-> pkt6 vif0) (new 'static 'vif-tag)) - (set! (-> pkt6 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) - (set! (-> v1-26 base) (&+ (the-as pointer pkt6) 16)) - ) + (let* ((v1-26 dma-buff) + (pkt6 (the-as dma-packet (-> v1-26 base))) + ) + (set! (-> pkt6 dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> pkt6 vif0) (new 'static 'vif-tag)) + (set! (-> pkt6 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1)) + (set! (-> v1-26 base) (&+ (the-as pointer pkt6) 16)) ) ) (let ((mem-use *dma-mem-usage*)) diff --git a/test/decompiler/reference/jak2/engine/gfx/texture/texture_REF.gc b/test/decompiler/reference/jak2/engine/gfx/texture/texture_REF.gc index 11a05c99cb..66b869f808 100644 --- a/test/decompiler/reference/jak2/engine/gfx/texture/texture_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/texture/texture_REF.gc @@ -682,37 +682,16 @@ ;; definition for function upload-vram-data ;; WARN: Return type mismatch symbol vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 13 (defun upload-vram-data ((buf dma-buffer) (dest int) (data pointer) (height int) (width int)) (while (> height 0) (let ((height-this-time (min 2048 height))) - (let* ((v1-1 buf) - (a0-1 (the-as dma-packet (-> v1-1 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-1 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-2 buf) - (a0-3 (the-as gs-gif-tag (-> v1-2 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-2 base) (the-as pointer (&+ a0-3 16))) - ) - (let* ((v1-3 buf) - (a0-5 (-> v1-3 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-5) 0) (new 'static 'gs-bitbltbuf :dbw (/ width 64) :dbp dest)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-5) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-5) 4) (new 'static 'gs-trxreg :rrw width :rrh height-this-time)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-5) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 trxdir)) - (set! (-> v1-3 base) (&+ a0-5 64)) - ) + (dma-buffer-add-gs-set buf + (bitbltbuf (new 'static 'gs-bitbltbuf :dbw (/ width 64) :dbp dest)) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw width :rrh height-this-time)) + (trxdir (new 'static 'gs-trxdir)) + ) (dma-buffer-add-ref-texture buf data width height-this-time (gs-psm ct32)) ) (+! dest 4096) @@ -723,8 +702,7 @@ ) ;; definition for function upload-vram-pages -;; WARN: Failed store: (s.w! (+ v1-54 8) 0) at op 169 -;; WARN: Failed store: (s.w! (+ v1-54 12) 0) at op 170 +;; ERROR: Failed store: (s.w! (+ a0-24 8) 0) at op 143 (defun upload-vram-pages ((pool texture-pool) (dest-seg texture-pool-segment) (tpage texture-page) @@ -810,28 +788,7 @@ ) (+! num-chunks chunks-pending) ) - (let ((v1-51 dma-buf)) - (let ((a0-24 (the-as dma-packet (-> v1-51 base)))) - (set! (-> a0-24 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-24 vif0) (new 'static 'vif-tag)) - (set! (-> a0-24 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-51 base) (the-as pointer (&+ a0-24 16))) - ) - ) - (let ((v1-52 dma-buf)) - (let ((a0-26 (the-as gs-gif-tag (-> v1-52 base)))) - (set! (-> a0-26 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-26 regs) GIF_REGS_ALL_AD) - (set! (-> v1-52 base) (the-as pointer (&+ a0-26 16))) - ) - ) - (let ((v1-53 dma-buf)) - (let ((a0-28 (-> v1-53 base))) - (set! (-> (the-as (pointer int64) a0-28) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-28) 1) (gs-reg64 texflush)) - (set! (-> v1-53 base) (&+ a0-28 16)) - ) - ) + (dma-buffer-add-gs-set dma-buf (texflush 1)) ) (shl num-chunks 14) ) @@ -891,8 +848,7 @@ ) ;; definition for function upload-vram-pages-pris -;; WARN: Failed store: (s.w! (+ v1-43 8) 0) at op 163 -;; WARN: Failed store: (s.w! (+ v1-43 12) 0) at op 164 +;; ERROR: Failed store: (s.w! (+ a0-27 8) 0) at op 137 (defun upload-vram-pages-pris ((pool texture-pool) (dest-seg texture-pool-segment) (tpage texture-page) @@ -964,28 +920,7 @@ ) (+! total-chunks-uploaded chunks-pending) ) - (let ((v1-40 dma-buf)) - (let ((a0-27 (the-as dma-packet (-> v1-40 base)))) - (set! (-> a0-27 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-27 vif0) (new 'static 'vif-tag)) - (set! (-> a0-27 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-40 base) (the-as pointer (&+ a0-27 16))) - ) - ) - (let ((v1-41 dma-buf)) - (let ((a0-29 (the-as gs-gif-tag (-> v1-41 base)))) - (set! (-> a0-29 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-29 regs) GIF_REGS_ALL_AD) - (set! (-> v1-41 base) (the-as pointer (&+ a0-29 16))) - ) - ) - (let ((v1-42 dma-buf)) - (let ((a0-31 (-> v1-42 base))) - (set! (-> (the-as (pointer int64) a0-31) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-31) 1) (gs-reg64 texflush)) - (set! (-> v1-42 base) (&+ a0-31 16)) - ) - ) + (dma-buffer-add-gs-set dma-buf (texflush 1)) ) (shl total-chunks-uploaded 14) ) @@ -1474,6 +1409,7 @@ ;; definition for method 13 of type texture-page ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 19 (defmethod upload-now! texture-page ((obj texture-page) (arg0 tex-upload-mode)) (let ((gp-0 *txt-dma-list*)) (let ((v1-0 gp-0)) @@ -1481,28 +1417,7 @@ (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length))) ) (add-to-dma-buffer obj gp-0 arg0) - (let* ((v1-3 gp-0) - (a0-1 (the-as dma-packet (-> v1-3 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-3 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-4 gp-0) - (a0-3 (the-as gs-gif-tag (-> v1-4 base))) - ) - (set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-3 regs) GIF_REGS_ALL_AD) - (set! (-> v1-4 base) (the-as pointer (&+ a0-3 16))) - ) - (let* ((v1-5 gp-0) - (a0-5 (-> v1-5 base)) - ) - (set! (-> (the-as (pointer int64) a0-5) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 texflush)) - (set! (-> v1-5 base) (&+ a0-5 16)) - ) + (dma-buffer-add-gs-set gp-0 (texflush 1)) (let* ((v1-6 gp-0) (a0-7 (the-as object (-> v1-6 base))) ) @@ -1547,47 +1462,26 @@ ) ;; definition for function texture-relocate +;; ERROR: Failed store: (s.w! (+ t4-0 8) 0) at op 18 (defun texture-relocate ((dma-buff dma-buffer) (tex texture) (dest-loc int) (dest-fmt gs-psm) (clut-dst int)) (dotimes (v1-0 (the-as int (-> tex num-mips))) (let ((t1-1 (ash (-> tex w) (- v1-0))) (t2-3 (ash (-> tex h) (- v1-0))) ) - (let* ((t3-2 dma-buff) - (t4-0 (the-as object (-> t3-2 base))) - ) - (set! (-> (the-as dma-packet t4-0) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet t4-0) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet t4-0) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> t3-2 base) (&+ (the-as pointer t4-0) 16)) - ) - (let* ((t3-3 dma-buff) - (t4-2 (the-as object (-> t3-3 base))) - ) - (set! (-> (the-as gs-gif-tag t4-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag t4-2) regs) GIF_REGS_ALL_AD) - (set! (-> t3-3 base) (&+ (the-as pointer t4-2) 16)) - ) - (let* ((t3-4 dma-buff) - (t4-4 (-> t3-4 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) t4-4) 0) (new 'static 'gs-bitbltbuf - :sbp (-> tex dest v1-0) - :sbw (-> tex width v1-0) - :spsm (the-as int (-> tex psm)) - :dbp (/ dest-loc 64) - :dbw (-> tex width v1-0) - :dpsm (the-as int dest-fmt) - ) - ) - (set! (-> (the-as (pointer gs-reg64) t4-4) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) t4-4) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) t4-4) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) t4-4) 4) (new 'static 'gs-trxreg :rrw t1-1 :rrh t2-3)) - (set! (-> (the-as (pointer gs-reg64) t4-4) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) t4-4) 6) (new 'static 'gs-trxdir :xdir #x2)) - (set! (-> (the-as (pointer gs-reg64) t4-4) 7) (gs-reg64 trxdir)) - (set! (-> t3-4 base) (&+ t4-4 64)) - ) + (dma-buffer-add-gs-set dma-buff + (bitbltbuf (new 'static 'gs-bitbltbuf + :sbp (-> tex dest v1-0) + :sbw (-> tex width v1-0) + :spsm (the-as int (-> tex psm)) + :dbp (/ dest-loc 64) + :dbw (-> tex width v1-0) + :dpsm (the-as int dest-fmt) + ) + ) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw t1-1 :rrh t2-3)) + (trxdir (new 'static 'gs-trxdir :xdir #x2)) + ) ) (set! (-> tex dest v1-0) (the-as uint (/ dest-loc 64))) ) @@ -1595,81 +1489,37 @@ ((< clut-dst 0) ) ((= (-> tex psm) (gs-psm mt4)) - (let* ((v1-7 dma-buff) - (a2-2 (the-as object (-> v1-7 base))) - ) - (set! (-> (the-as dma-packet a2-2) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-2) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-2) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-7 base) (&+ (the-as pointer a2-2) 16)) - ) - (let* ((v1-8 dma-buff) - (a2-4 (the-as object (-> v1-8 base))) - ) - (set! (-> (the-as gs-gif-tag a2-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a2-4) regs) GIF_REGS_ALL_AD) - (set! (-> v1-8 base) (&+ (the-as pointer a2-4) 16)) - ) - (let* ((v1-9 dma-buff) - (a2-6 (-> v1-9 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a2-6) 0) (new 'static 'gs-bitbltbuf - :sbw #x1 - :dbw #x1 - :dpsm (-> tex clutpsm) - :dbp (/ clut-dst 64) - :spsm (-> tex clutpsm) - :sbp (-> tex clutdest) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a2-6) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a2-6) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a2-6) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a2-6) 4) (new 'static 'gs-trxreg :rrw #x8 :rrh #x2)) - (set! (-> (the-as (pointer gs-reg64) a2-6) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a2-6) 6) (new 'static 'gs-trxdir :xdir #x2)) - (set! (-> (the-as (pointer gs-reg64) a2-6) 7) (gs-reg64 trxdir)) - (set! (-> v1-9 base) (&+ a2-6 64)) - ) + (dma-buffer-add-gs-set dma-buff + (bitbltbuf (new 'static 'gs-bitbltbuf + :sbw #x1 + :dbw #x1 + :dpsm (-> tex clutpsm) + :dbp (/ clut-dst 64) + :spsm (-> tex clutpsm) + :sbp (-> tex clutdest) + ) + ) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw #x8 :rrh #x2)) + (trxdir (new 'static 'gs-trxdir :xdir #x2)) + ) (set! (-> tex clutdest) (the-as uint (/ clut-dst 64))) ) ((= (-> tex psm) (gs-psm mt8)) - (let* ((v1-13 dma-buff) - (a2-9 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as dma-packet a2-9) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a2-9) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a2-9) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (&+ (the-as pointer a2-9) 16)) - ) - (let* ((v1-14 dma-buff) - (a2-11 (the-as object (-> v1-14 base))) - ) - (set! (-> (the-as gs-gif-tag a2-11) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a2-11) regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (&+ (the-as pointer a2-11) 16)) - ) - (let* ((v1-15 dma-buff) - (a2-13 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a2-13) 0) (new 'static 'gs-bitbltbuf - :sbw #x2 - :dbw #x2 - :dpsm (-> tex clutpsm) - :dbp (/ clut-dst 64) - :spsm (-> tex clutpsm) - :sbp (-> tex clutdest) - ) - ) - (set! (-> (the-as (pointer gs-reg64) a2-13) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a2-13) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a2-13) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a2-13) 4) (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) - (set! (-> (the-as (pointer gs-reg64) a2-13) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a2-13) 6) (new 'static 'gs-trxdir :xdir #x2)) - (set! (-> (the-as (pointer gs-reg64) a2-13) 7) (gs-reg64 trxdir)) - (set! (-> v1-15 base) (&+ a2-13 64)) - ) + (dma-buffer-add-gs-set dma-buff + (bitbltbuf (new 'static 'gs-bitbltbuf + :sbw #x2 + :dbw #x2 + :dpsm (-> tex clutpsm) + :dbp (/ clut-dst 64) + :spsm (-> tex clutpsm) + :sbp (-> tex clutdest) + ) + ) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw #x10 :rrh #x10)) + (trxdir (new 'static 'gs-trxdir :xdir #x2)) + ) (set! (-> tex clutdest) (the-as uint (/ clut-dst 64))) ) ) @@ -1701,6 +1551,7 @@ ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Stack slot offset 16 signed mismatch ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-26 8) 0) at op 192 (defmethod setup-font-texture texture-pool ((obj texture-pool)) (local-vars (sv-16 int) (sv-20 int)) (let ((s3-0 (-> obj font-palette))) @@ -1768,28 +1619,7 @@ (texture-relocate s4-0 s3-5 s2-5 (the-as gs-psm s1-5) -1) (font-set-tex0 (the-as (pointer gs-tex0) (-> *font-work* large-font-3-tmpl)) s3-5 s2-5 s1-5 sv-20) ) - (let* ((v1-28 s4-0) - (a0-26 (the-as dma-packet (-> v1-28 base))) - ) - (set! (-> a0-26 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-26 vif0) (new 'static 'vif-tag)) - (set! (-> a0-26 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-28 base) (the-as pointer (&+ a0-26 16))) - ) - (let* ((v1-29 s4-0) - (a0-28 (the-as gs-gif-tag (-> v1-29 base))) - ) - (set! (-> a0-28 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-28 regs) GIF_REGS_ALL_AD) - (set! (-> v1-29 base) (the-as pointer (&+ a0-28 16))) - ) - (let* ((v1-30 s4-0) - (a0-30 (-> v1-30 base)) - ) - (set! (-> (the-as (pointer int64) a0-30) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-30) 1) (gs-reg64 texflush)) - (set! (-> v1-30 base) (&+ a0-30 16)) - ) + (dma-buffer-add-gs-set s4-0 (texflush 1)) (let* ((v1-31 s4-0) (a0-32 (the-as object (-> v1-31 base))) ) @@ -2440,3 +2270,7 @@ ;; definition for symbol *texture-pool*, type texture-pool (define *texture-pool* (new 'global 'texture-pool)) + + + + diff --git a/test/decompiler/reference/jak2/engine/gfx/tie/tie_REF.gc b/test/decompiler/reference/jak2/engine/gfx/tie/tie_REF.gc index fd0910498b..14ea0130fd 100644 --- a/test/decompiler/reference/jak2/engine/gfx/tie/tie_REF.gc +++ b/test/decompiler/reference/jak2/engine/gfx/tie/tie_REF.gc @@ -438,29 +438,9 @@ ;; definition for function tie-end-buffer ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a1-0 8) 0) at op 4 (defun tie-end-buffer ((arg0 dma-buffer)) - (let* ((v1-0 arg0) - (a1-0 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a1-0 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a1-0 vif0) (new 'static 'vif-tag)) - (set! (-> a1-0 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a1-0 16))) - ) - (let* ((v1-1 arg0) - (a1-2 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a1-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a1-2 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a1-2 16))) - ) - (let* ((v1-2 arg0) - (a1-4 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-test) a1-4) 0) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) - (set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 test-1)) - (set! (-> v1-2 base) (&+ a1-4 16)) - ) + (dma-buffer-add-gs-set arg0 (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))) (let* ((v1-3 arg0) (a1-6 (the-as dma-packet (-> v1-3 base))) ) @@ -476,10 +456,10 @@ (set! (-> (the-as (pointer vif-tag) a0-1) 1) (new 'static 'vif-tag :cmd (vif-cmd stmod))) (set! (-> (the-as (pointer vif-tag) a0-1) 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> (the-as (pointer vif-tag) a0-1) 3) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1)) - (set! (-> (the-as (pointer int32) a0-1) 4) 0) - (set! (-> (the-as (pointer int32) a0-1) 5) 0) - (set! (-> (the-as (pointer int32) a0-1) 6) 0) - (set! (-> (the-as (pointer int32) a0-1) 7) 0) + (set! (-> (the-as (pointer vif-tag) a0-1) 4) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) a0-1) 5) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) a0-1) 6) (new 'static 'vif-tag)) + (set! (-> (the-as (pointer vif-tag) a0-1) 7) (new 'static 'vif-tag)) (set! (-> v1-4 base) (&+ a0-1 32)) ) 0 diff --git a/test/decompiler/reference/jak2/engine/scene/scene_REF.gc b/test/decompiler/reference/jak2/engine/scene/scene_REF.gc index 2248fd4606..53defb46fb 100644 --- a/test/decompiler/reference/jak2/engine/scene/scene_REF.gc +++ b/test/decompiler/reference/jak2/engine/scene/scene_REF.gc @@ -746,6 +746,8 @@ ;; definition for function draw-subtitle-image ;; INFO: Used lq/sq +;; WARN: Return type mismatch pointer vs none. +;; ERROR: Failed store: (s.w! (+ a0-7 8) 0) at op 45 (defun draw-subtitle-image ((arg0 subtitle-image) (arg1 font-context)) (local-vars (sv-16 pointer) (sv-32 int)) (let ((gp-0 (-> arg0 width)) @@ -756,41 +758,17 @@ (unpack-comp-rle (the-as (pointer int8) sv-16) (the-as (pointer int8) (-> arg0 data))) (&+! (-> s4-0 base) (logand -16 (+ (shr (* gp-0 s5-0) 1) 15))) ) - (let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) - (s4-1 (-> s3-0 base)) - ) + (with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf)) + (bucket-id subtitle) + ) (upload-vram-data s3-0 0 (-> arg0 palette) 2 8) (let ((s0-0 20)) - (let* ((v1-13 s3-0) - (a0-7 (the-as object (-> v1-13 base))) - ) - (set! (-> (the-as dma-packet a0-7) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-7) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-7) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a0-7) 16)))) - ) - (let* ((v1-14 s3-0) - (a0-9 (the-as gs-gif-tag (-> v1-14 base))) - ) - (set! (-> a0-9 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> a0-9 regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (the-as pointer (&+ a0-9 16))) - ) - (let* ((v1-15 s3-0) - (a0-11 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-11) 0) - (new 'static 'gs-bitbltbuf :dbp #x1 :dbw (shr gp-0 6) :dpsm s0-0) - ) - (set! (-> (the-as (pointer gs-reg64) a0-11) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-11) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-11) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-11) 4) (new 'static 'gs-trxreg :rrw gp-0 :rrh s5-0)) - (set! (-> (the-as (pointer gs-reg64) a0-11) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-11) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-11) 7) (gs-reg64 trxdir)) - (set! (-> v1-15 base) (&+ a0-11 64)) - ) + (dma-buffer-add-gs-set s3-0 + (bitbltbuf (new 'static 'gs-bitbltbuf :dbp #x1 :dbw (shr gp-0 6) :dpsm s0-0)) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw gp-0 :rrh s5-0)) + (trxdir (new 'static 'gs-trxdir)) + ) (let ((t9-2 dma-buffer-add-ref-texture) (a0-13 s3-0) (a2-8 gp-0) @@ -801,44 +779,14 @@ ) (set! sv-32 (+ (log2 (the-as int (+ gp-0 -1))) 1)) (let ((v1-17 (+ (log2 (the-as int (+ s5-0 -1))) 1))) - (let* ((a0-16 s3-0) - (a1-23 (the-as object (-> a0-16 base))) - ) - (set! (-> (the-as dma-packet a1-23) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a1-23) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a1-23) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> a0-16 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a1-23) 16)))) - ) - (let* ((a0-17 s3-0) - (a1-25 (the-as object (-> a0-17 base))) - ) - (set! (-> (the-as gs-gif-tag a1-25) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> (the-as gs-gif-tag a1-25) regs) GIF_REGS_ALL_AD) - (set! (-> a0-17 base) (&+ (the-as pointer a1-25) 16)) - ) - (let* ((a0-18 s3-0) - (a1-27 (-> a0-18 base)) - ) - (set! (-> (the-as (pointer gs-test) a1-27) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-27) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) a1-27) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a1-27) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) a1-27) 4) - (new 'static 'gs-tex0 :tbp0 #x1 :tcc #x1 :cld #x1 :psm s0-0 :th v1-17 :tw sv-32 :tbw (shr gp-0 6)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-27) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a1-27) 6) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a1-27) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) a1-27) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a1-27) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) a1-27) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a1-27) 11) (gs-reg64 texflush)) - (set! (-> a0-18 base) (&+ a1-27 96)) - ) + (dma-buffer-add-gs-set s3-0 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x1 :tcc #x1 :cld #x1 :psm s0-0 :th v1-17 :tw sv-32 :tbw (shr gp-0 6))) + (tex1-1 (new 'static 'gs-tex1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) ) ) (let* ((v1-28 (-> s3-0 base)) @@ -852,30 +800,10 @@ (set! (-> (the-as (pointer uint128) v1-28) 0) (-> *subtitle-work* draw-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-28) 1) (-> *subtitle-work* draw-tmpl quad 1)) (set! (-> (the-as (pointer uint128) v1-28) 2) (-> *subtitle-work* color0 quad)) - (let ((t0-8 (the-as gs-gif-tag (&+ v1-28 48)))) - (set! (-> t0-8 word 0) (the-as uint 0)) - (set! (-> t0-8 word 1) (the-as uint 0)) - (set! (-> t0-8 word 2) (the-as uint 0)) - (set! (-> t0-8 word 3) (the-as uint 0)) - ) - (let ((t0-9 (the-as object (&+ v1-28 64)))) - (set! (-> (the-as gs-gif-tag t0-9) word 0) (* a2-23 16)) - (set! (-> (the-as gs-gif-tag t0-9) word 1) (the-as uint (* a3-8 16))) - (set! (-> (the-as gs-gif-tag t0-9) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag t0-9) word 3) (the-as uint 0)) - ) - (let ((a2-26 (the-as object (&+ v1-28 80)))) - (set! (-> (the-as gs-gif-tag a2-26) word 0) (* gp-0 16)) - (set! (-> (the-as gs-gif-tag a2-26) word 1) (* s5-0 16)) - (set! (-> (the-as gs-gif-tag a2-26) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag a2-26) word 3) (the-as uint 0)) - ) - (let ((v1-29 (the-as object (&+ v1-28 96)))) - (set! (-> (the-as gs-gif-tag v1-29) word 0) (* a0-23 16)) - (set! (-> (the-as gs-gif-tag v1-29) word 1) (the-as uint (* a1-33 16))) - (set! (-> (the-as gs-gif-tag v1-29) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag v1-29) word 3) (the-as uint 0)) - ) + (set-vector! (the-as vector4w (&+ v1-28 48)) 0 0 0 0) + (set-vector! (the-as vector4w (&+ v1-28 64)) (the-as int (* a2-23 16)) (* a3-8 16) 0 0) + (set-vector! (the-as vector4w (&+ v1-28 80)) (the-as int (* gp-0 16)) (the-as int (* s5-0 16)) 0 0) + (set-vector! (the-as vector4w (&+ v1-28 96)) (the-as int (* a0-23 16)) (* a1-33 16) 0 0) ) (&+! (-> s3-0 base) 112) (let* ((v1-32 (-> s3-0 base)) @@ -889,49 +817,16 @@ (set! (-> (the-as (pointer uint128) v1-32) 0) (-> *subtitle-work* draw-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-32) 1) (-> *subtitle-work* draw-tmpl quad 1)) (set! (-> (the-as (pointer uint128) v1-32) 2) (-> *subtitle-work* color1 quad)) - (let ((t0-16 (the-as gs-gif-tag (&+ v1-32 48)))) - (set! (-> t0-16 word 0) (the-as uint 0)) - (set! (-> t0-16 word 1) (the-as uint 0)) - (set! (-> t0-16 word 2) (the-as uint 0)) - (set! (-> t0-16 word 3) (the-as uint 0)) - ) - (let ((t0-17 (the-as object (&+ v1-32 64)))) - (set! (-> (the-as gs-gif-tag t0-17) word 0) (* a1-38 16)) - (set! (-> (the-as gs-gif-tag t0-17) word 1) (the-as uint (* a3-11 16))) - (set! (-> (the-as gs-gif-tag t0-17) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag t0-17) word 3) (the-as uint 0)) - ) - (let ((a1-41 (the-as object (&+ v1-32 80)))) - (set! (-> (the-as gs-gif-tag a1-41) word 0) (* gp-0 16)) - (set! (-> (the-as gs-gif-tag a1-41) word 1) (* s5-0 16)) - (set! (-> (the-as gs-gif-tag a1-41) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag a1-41) word 3) (the-as uint 0)) - ) - (let ((v1-33 (the-as object (&+ v1-32 96)))) - (set! (-> (the-as gs-gif-tag v1-33) word 0) (* a0-30 16)) - (set! (-> (the-as gs-gif-tag v1-33) word 1) (the-as uint (* a2-28 16))) - (set! (-> (the-as gs-gif-tag v1-33) word 2) (the-as uint 0)) - (set! (-> (the-as gs-gif-tag v1-33) word 3) (the-as uint 0)) - ) + (set-vector! (the-as vector4w (&+ v1-32 48)) 0 0 0 0) + (set-vector! (the-as vector4w (&+ v1-32 64)) (the-as int (* a1-38 16)) (* a3-11 16) 0 0) + (set-vector! (the-as vector4w (&+ v1-32 80)) (the-as int (* gp-0 16)) (the-as int (* s5-0 16)) 0 0) + (set-vector! (the-as vector4w (&+ v1-32 96)) (the-as int (* a0-30 16)) (* a2-28 16) 0 0) ) (&+! (-> s3-0 base) 112) (set-dirty-mask! (-> *level* default-level) 8 (the-as int (* gp-0 s5-0)) 256) - (let ((a3-15 (-> s3-0 base))) - (let ((v1-37 (the-as object (-> s3-0 base)))) - (set! (-> (the-as dma-packet v1-37) dma) (new 'static 'dma-tag :id (dma-tag-id next))) - (set! (-> (the-as dma-packet v1-37) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet v1-37) vif1) (new 'static 'vif-tag)) - (set! (-> s3-0 base) (&+ (the-as pointer v1-37) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) bucket-group) - (bucket-id subtitle) - s4-1 - (the-as (pointer dma-tag) a3-15) - ) - ) ) ) + (none) ) ;; definition for function process-drawable-draw-subtitles diff --git a/test/decompiler/reference/jak2/engine/ui/bigmap-h_REF.gc b/test/decompiler/reference/jak2/engine/ui/bigmap-h_REF.gc index 0266f6c0c8..cc72eb26ba 100644 --- a/test/decompiler/reference/jak2/engine/ui/bigmap-h_REF.gc +++ b/test/decompiler/reference/jak2/engine/ui/bigmap-h_REF.gc @@ -242,7 +242,7 @@ (bigmap-method-19 (_type_) int 19) (bigmap-method-20 (_type_) int 20) (bigmap-method-21 (_type_ int int) int 21) - (bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int int) none 22) + (bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int gs-psm) none 22) (bigmap-method-23 (_type_) none 23) (bigmap-method-24 (_type_ dma-buffer) none 24) (bigmap-method-25 (_type_ dma-buffer) none 25) @@ -406,7 +406,3 @@ ) ) ) - - - - diff --git a/test/decompiler/reference/jak2/engine/ui/bigmap_REF.gc b/test/decompiler/reference/jak2/engine/ui/bigmap_REF.gc index 06cd0400f3..5b183b0ae4 100644 --- a/test/decompiler/reference/jak2/engine/ui/bigmap_REF.gc +++ b/test/decompiler/reference/jak2/engine/ui/bigmap_REF.gc @@ -226,40 +226,17 @@ ;; definition for method 22 of type bigmap ;; WARN: Return type mismatch int vs none. -(defmethod bigmap-method-22 bigmap ((obj bigmap) (arg0 dma-buffer) (arg1 (pointer uint32)) (arg2 int) (arg3 int) (arg4 int) (arg5 int)) +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 5 +(defmethod bigmap-method-22 bigmap ((obj bigmap) (arg0 dma-buffer) (arg1 (pointer uint32)) (arg2 int) (arg3 int) (arg4 int) (arg5 gs-psm)) (local-vars (sv-16 int)) (set! sv-16 arg2) - (let* ((v1-0 arg0) - (a0-1 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt))) - (set! (-> a0-1 vif0) (new 'static 'vif-tag)) - (set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a0-1 16))) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-bitbltbuf) a0-5) 0) - (new 'static 'gs-bitbltbuf :dpsm arg5 :dbp sv-16 :dbw (/ arg3 64)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 bitbltbuf)) - (set! (-> (the-as (pointer gs-trxpos) a0-5) 2) (new 'static 'gs-trxpos)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 trxpos)) - (set! (-> (the-as (pointer gs-trxreg) a0-5) 4) (new 'static 'gs-trxreg :rrw arg3 :rrh arg4)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 trxreg)) - (set! (-> (the-as (pointer gs-trxdir) a0-5) 6) (new 'static 'gs-trxdir)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 trxdir)) - (set! (-> v1-2 base) (&+ a0-5 64)) - ) - (dma-buffer-add-ref-texture arg0 arg1 arg3 arg4 (the-as gs-psm arg5)) + (dma-buffer-add-gs-set arg0 + (bitbltbuf (new 'static 'gs-bitbltbuf :dpsm (the-as int arg5) :dbp sv-16 :dbw (/ arg3 64))) + (trxpos (new 'static 'gs-trxpos)) + (trxreg (new 'static 'gs-trxreg :rrw arg3 :rrh arg4)) + (trxdir (new 'static 'gs-trxdir)) + ) + (dma-buffer-add-ref-texture arg0 arg1 arg3 arg4 arg5) 0 (none) ) @@ -282,240 +259,68 @@ ) ;; definition for method 24 of type bigmap +;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 22 (defmethod bigmap-method-24 bigmap ((obj bigmap) (arg0 dma-buffer)) (let ((s4-0 (the-as (pointer uint32) (-> obj bigmap-image art-group)))) (let ((v1-1 (-> s4-0 0)) (s3-0 (-> s4-0 1)) ) - (bigmap-method-22 obj arg0 (+ (+ v1-1 16) (the-as uint s4-0)) 0 16 16 0) - (let* ((v1-4 arg0) - (a0-2 (the-as dma-packet (-> v1-4 base))) - ) - (set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-2 vif0) (new 'static 'vif-tag)) - (set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-4 base) (the-as pointer (&+ a0-2 16))) - ) - (let* ((v1-5 arg0) - (a0-4 (the-as gs-gif-tag (-> v1-5 base))) - ) - (set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-4 regs) GIF_REGS_ALL_AD) - (set! (-> v1-5 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((v1-6 arg0) - (a0-6 (-> v1-6 base)) - ) - (set! (-> (the-as (pointer int64) a0-6) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 texflush)) - (set! (-> v1-6 base) (&+ a0-6 16)) - ) - (bigmap-method-22 obj arg0 (+ (+ s3-0 16) (the-as uint s4-0)) 8 512 208 19) - ) - (let* ((v1-10 arg0) - (a0-9 (the-as dma-packet (-> v1-10 base))) - ) - (set! (-> a0-9 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-9 vif0) (new 'static 'vif-tag)) - (set! (-> a0-9 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-10 base) (the-as pointer (&+ a0-9 16))) - ) - (let* ((v1-11 arg0) - (a0-11 (the-as gs-gif-tag (-> v1-11 base))) - ) - (set! (-> a0-11 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-11 regs) GIF_REGS_ALL_AD) - (set! (-> v1-11 base) (the-as pointer (&+ a0-11 16))) - ) - (let* ((v1-12 arg0) - (a0-13 (-> v1-12 base)) - ) - (set! (-> (the-as (pointer gs-tex0) a0-13) 0) - (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a0-13) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a0-13) 2) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-13) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer int64) a0-13) 4) 1) - (set! (-> (the-as (pointer gs-reg64) a0-13) 5) (gs-reg64 texflush)) - (set! (-> v1-12 base) (&+ a0-13 48)) + (bigmap-method-22 obj arg0 (+ (+ v1-1 16) (the-as uint s4-0)) 0 16 16 (gs-psm ct32)) + (dma-buffer-add-gs-set arg0 (texflush 1)) + (bigmap-method-22 obj arg0 (+ (+ s3-0 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1)) + (tex1-1 (new 'static 'gs-tex1)) + (texflush 1) + ) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2)) (let ((v1-16 (+ #x1a000 (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (+ (+ v1-16 16) (the-as uint s4-0)) 8 512 208 19) - ) - (let* ((v1-19 arg0) - (a0-18 (the-as dma-packet (-> v1-19 base))) - ) - (set! (-> a0-18 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-18 vif0) (new 'static 'vif-tag)) - (set! (-> a0-18 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-19 base) (the-as pointer (&+ a0-18 16))) - ) - (let* ((v1-20 arg0) - (a0-20 (the-as gs-gif-tag (-> v1-20 base))) - ) - (set! (-> a0-20 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-20 regs) GIF_REGS_ALL_AD) - (set! (-> v1-20 base) (the-as pointer (&+ a0-20 16))) - ) - (let* ((v1-21 arg0) - (a0-22 (-> v1-21 base)) - ) - (set! (-> (the-as (pointer int64) a0-22) 0) 0) - (set! (-> (the-as (pointer gs-reg64) a0-22) 1) (gs-reg64 texflush)) - (set! (-> v1-21 base) (&+ a0-22 16)) + (bigmap-method-22 obj arg0 (+ (+ v1-16 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 (texflush 0)) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1)) (let ((v1-25 (+ (-> s4-0 0) 1024)) (s3-1 (+ #x34000 (-> s4-0 1))) ) - (bigmap-method-22 obj arg0 (+ (+ v1-25 16) (the-as uint s4-0)) 0 16 16 0) - (bigmap-method-22 obj arg0 (+ (+ s3-1 16) (the-as uint s4-0)) 8 512 208 19) - ) - (let* ((v1-31 arg0) - (a0-28 (the-as dma-packet (-> v1-31 base))) - ) - (set! (-> a0-28 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-28 vif0) (new 'static 'vif-tag)) - (set! (-> a0-28 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-31 base) (the-as pointer (&+ a0-28 16))) - ) - (let* ((v1-32 arg0) - (a0-30 (the-as gs-gif-tag (-> v1-32 base))) - ) - (set! (-> a0-30 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-30 regs) GIF_REGS_ALL_AD) - (set! (-> v1-32 base) (the-as pointer (&+ a0-30 16))) - ) - (let* ((v1-33 arg0) - (a0-32 (-> v1-33 base)) - ) - (set! (-> (the-as (pointer gs-tex0) a0-32) 0) - (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :tcc #x1 :cld #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a0-32) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a0-32) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-32) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer int64) a0-32) 4) 1) - (set! (-> (the-as (pointer gs-reg64) a0-32) 5) (gs-reg64 texflush)) - (set! (-> v1-33 base) (&+ a0-32 48)) + (bigmap-method-22 obj arg0 (+ (+ v1-25 16) (the-as uint s4-0)) 0 16 16 (gs-psm ct32)) + (bigmap-method-22 obj arg0 (+ (+ s3-1 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :tcc #x1 :cld #x1)) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texflush 1) + ) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2)) (let ((v1-37 (+ #x4e000 (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (+ (+ v1-37 16) (the-as uint s4-0)) 8 512 208 19) + (bigmap-method-22 obj arg0 (+ (+ v1-37 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8)) ) ) - (let* ((v1-40 arg0) - (a0-37 (the-as dma-packet (-> v1-40 base))) - ) - (set! (-> a0-37 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-37 vif0) (new 'static 'vif-tag)) - (set! (-> a0-37 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-40 base) (the-as pointer (&+ a0-37 16))) - ) - (let* ((v1-41 arg0) - (a0-39 (the-as gs-gif-tag (-> v1-41 base))) - ) - (set! (-> a0-39 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-39 regs) GIF_REGS_ALL_AD) - (set! (-> v1-41 base) (the-as pointer (&+ a0-39 16))) - ) - (let* ((v1-42 arg0) - (a0-41 (-> v1-42 base)) - ) - (set! (-> (the-as (pointer int64) a0-41) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-41) 1) (gs-reg64 texflush)) - (set! (-> v1-42 base) (&+ a0-41 16)) - ) + (dma-buffer-add-gs-set arg0 (texflush 1)) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1)) (none) ) ;; definition for method 25 of type bigmap +;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 21 (defmethod bigmap-method-25 bigmap ((obj bigmap) (arg0 dma-buffer)) (let ((s4-0 (the-as (pointer uint32) (-> obj bigmap-image art-group)))) - (bigmap-method-22 obj arg0 (+ (+ (-> s4-0 0) 16) (the-as uint s4-0)) 0 16 16 0) - (let* ((v1-5 arg0) - (a0-2 (the-as dma-packet (-> v1-5 base))) - ) - (set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-2 vif0) (new 'static 'vif-tag)) - (set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-5 base) (the-as pointer (&+ a0-2 16))) - ) - (let* ((v1-6 arg0) - (a0-4 (the-as gs-gif-tag (-> v1-6 base))) - ) - (set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-4 regs) GIF_REGS_ALL_AD) - (set! (-> v1-6 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((v1-7 arg0) - (a0-6 (-> v1-7 base)) - ) - (set! (-> (the-as (pointer int64) a0-6) 0) 0) - (set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 texflush)) - (set! (-> v1-7 base) (&+ a0-6 16)) - ) + (bigmap-method-22 obj arg0 (+ (+ (-> s4-0 0) 16) (the-as uint s4-0)) 0 16 16 (gs-psm ct32)) + (dma-buffer-add-gs-set arg0 (texflush 0)) (let ((v1-10 (+ (* (the int (-> obj scroll y)) 512) (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (+ (+ v1-10 16) (the-as int s4-0)) 8 512 208 19) - ) - (let* ((v1-13 arg0) - (a0-10 (the-as dma-packet (-> v1-13 base))) - ) - (set! (-> a0-10 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-10 vif0) (new 'static 'vif-tag)) - (set! (-> a0-10 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-13 base) (the-as pointer (&+ a0-10 16))) - ) - (let* ((v1-14 arg0) - (a0-12 (the-as gs-gif-tag (-> v1-14 base))) - ) - (set! (-> a0-12 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-12 regs) GIF_REGS_ALL_AD) - (set! (-> v1-14 base) (the-as pointer (&+ a0-12 16))) - ) - (let* ((v1-15 arg0) - (a0-14 (-> v1-15 base)) - ) - (set! (-> (the-as (pointer gs-tex0) a0-14) 0) - (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1) - ) - (set! (-> (the-as (pointer gs-reg64) a0-14) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) a0-14) 2) (new 'static 'gs-tex1)) - (set! (-> (the-as (pointer gs-reg64) a0-14) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer int64) a0-14) 4) 1) - (set! (-> (the-as (pointer gs-reg64) a0-14) 5) (gs-reg64 texflush)) - (set! (-> v1-15 base) (&+ a0-14 48)) + (bigmap-method-22 obj arg0 (+ (+ v1-10 16) (the-as int s4-0)) 8 512 208 (gs-psm mt8)) ) + (dma-buffer-add-gs-set arg0 + (tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1)) + (tex1-1 (new 'static 'gs-tex1)) + (texflush 1) + ) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2)) (let ((v1-21 (+ (* (+ (the int (-> obj scroll y)) 208) 512) (-> s4-0 1)))) - (bigmap-method-22 obj arg0 (+ (+ v1-21 16) (the-as int s4-0)) 8 512 208 19) + (bigmap-method-22 obj arg0 (+ (+ v1-21 16) (the-as int s4-0)) 8 512 208 (gs-psm mt8)) ) ) - (let* ((v1-24 arg0) - (a0-19 (the-as dma-packet (-> v1-24 base))) - ) - (set! (-> a0-19 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-19 vif0) (new 'static 'vif-tag)) - (set! (-> a0-19 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-24 base) (the-as pointer (&+ a0-19 16))) - ) - (let* ((v1-25 arg0) - (a0-21 (the-as gs-gif-tag (-> v1-25 base))) - ) - (set! (-> a0-21 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-21 regs) GIF_REGS_ALL_AD) - (set! (-> v1-25 base) (the-as pointer (&+ a0-21 16))) - ) - (let* ((v1-26 arg0) - (a0-23 (-> v1-26 base)) - ) - (set! (-> (the-as (pointer int64) a0-23) 0) 1) - (set! (-> (the-as (pointer gs-reg64) a0-23) 1) (gs-reg64 texflush)) - (set! (-> v1-26 base) (&+ a0-23 16)) - ) + (dma-buffer-add-gs-set arg0 (texflush 1)) (bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1)) (none) ) @@ -776,7 +581,7 @@ ;; definition for method 11 of type bigmap ;; INFO: Used lq/sq -;; ERROR: Failed store: (s.w! (+ v1-35 8) 0) at op 125 +;; ERROR: Failed store: (s.w! (+ a0-5 8) 0) at op 75 (defmethod bigmap-method-11 bigmap ((obj bigmap) (arg0 int) (arg1 int) (arg2 int) (arg3 int)) (local-vars (sv-96 pointer) (sv-100 texture) (sv-104 matrix) (sv-112 int)) (with-pp @@ -801,34 +606,11 @@ (with-dma-buffer-add-bucket ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf)) (bucket-id tex-all-map) ) - (let ((v1-27 s4-1)) - (let ((a0-5 (the-as dma-packet (-> v1-27 base)))) - (set! (-> a0-5 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-5 vif0) (new 'static 'vif-tag)) - (set! (-> a0-5 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-27 base) (the-as pointer (&+ a0-5 16))) - ) - ) - (let ((v1-28 s4-1)) - (let ((a0-7 (the-as gs-gif-tag (-> v1-28 base)))) - (set! (-> a0-7 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-7 regs) GIF_REGS_ALL_AD) - (set! (-> v1-28 base) (the-as pointer (&+ a0-7 16))) - ) - ) - (let ((v1-29 s4-1)) - (let ((a0-9 (-> v1-29 base))) - (set! (-> (the-as (pointer gs-test) a0-9) 0) - (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-9) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer int64) a0-9) 2) 68) - (set! (-> (the-as (pointer gs-reg64) a0-9) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer int64) a0-9) 4) 5) - (set! (-> (the-as (pointer gs-reg64) a0-9) 5) (gs-reg64 clamp-1)) - (set! (-> v1-29 base) (&+ a0-9 48)) - ) - ) + (dma-buffer-add-gs-set s4-1 + (test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + ) (if (= (-> obj bigmap-index) 20) (bigmap-method-25 obj s4-1) (bigmap-method-24 obj s4-1) @@ -1117,7 +899,3 @@ ;; failed to figure out what this is: (kmemclose) - - - - diff --git a/test/decompiler/reference/jak2/engine/ui/minimap_REF.gc b/test/decompiler/reference/jak2/engine/ui/minimap_REF.gc index 92793264a3..16cef87826 100644 --- a/test/decompiler/reference/jak2/engine/ui/minimap_REF.gc +++ b/test/decompiler/reference/jak2/engine/ui/minimap_REF.gc @@ -1167,6 +1167,7 @@ ) ;; definition for method 3 of type engine-minimap +;; INFO: this function exists in multiple non-identical object files (defmethod inspect engine-minimap ((obj engine-minimap)) ((the-as (function engine-minimap engine-minimap) (find-parent-method engine-minimap 3)) obj) (let ((s5-0 0) @@ -1963,6 +1964,7 @@ ;; definition for method 21 of type minimap ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-4 8) 0) at op 35 (defmethod sub-draw-1-1 minimap ((obj minimap) (arg0 minimap-draw-work)) (with-pp (let ((s5-0 (-> arg0 buf))) @@ -1978,34 +1980,11 @@ ) ) (&+! (-> s5-0 base) 112) - (let* ((v1-8 s5-0) - (a0-4 (the-as dma-packet (-> v1-8 base))) - ) - (set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-4 vif0) (new 'static 'vif-tag)) - (set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-8 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((v1-9 s5-0) - (a0-6 (the-as gs-gif-tag (-> v1-9 base))) - ) - (set! (-> a0-6 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-6 regs) GIF_REGS_ALL_AD) - (set! (-> v1-9 base) (the-as pointer (&+ a0-6 16))) - ) - (let* ((v1-10 s5-0) - (a0-8 (-> v1-10 base)) - ) - (set! (-> (the-as (pointer gs-clamp) a0-8) 0) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-test) a0-8) 2) - (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-texa) a0-8) 4) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-8) 5) (gs-reg64 texa)) - (set! (-> v1-10 base) (&+ a0-8 48)) - ) + (dma-buffer-add-gs-set s5-0 + (clamp-1 (new 'static 'gs-clamp)) + (test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))) + (texa (new 'static 'gs-texa :ta1 #x80)) + ) (let ((s3-1 (the-as object (-> s5-0 base)))) (let ((f30-0 (-> *video-params* relative-x-scale))) (set! (-> (the-as (pointer uint128) s3-1)) (-> obj draw2-tmpl dma-vif quad)) @@ -2071,28 +2050,7 @@ ) (seek! (-> obj frustum-alpha) f0-57 (-> pp clock seconds-per-frame)) ) - (let* ((v1-55 s5-0) - (a0-44 (the-as dma-packet (-> v1-55 base))) - ) - (set! (-> a0-44 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-44 vif0) (new 'static 'vif-tag)) - (set! (-> a0-44 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-55 base) (the-as pointer (&+ a0-44 16))) - ) - (let* ((v1-56 s5-0) - (a0-46 (the-as gs-gif-tag (-> v1-56 base))) - ) - (set! (-> a0-46 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-46 regs) GIF_REGS_ALL_AD) - (set! (-> v1-56 base) (the-as pointer (&+ a0-46 16))) - ) - (let* ((v1-57 s5-0) - (a0-48 (-> v1-57 base)) - ) - (set! (-> (the-as (pointer gs-xy-offset) a0-48) 0) (new 'static 'gs-xy-offset :ofx #x640 :ofy #x640)) - (set! (-> (the-as (pointer gs-reg64) a0-48) 1) (gs-reg64 xyoffset-1)) - (set! (-> v1-57 base) (&+ a0-48 16)) - ) + (dma-buffer-add-gs-set s5-0 (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x640 :ofy #x640))) (when (!= (-> obj frustum-alpha) 0.0) (let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list-override)))) (while s3-2 @@ -2148,34 +2106,11 @@ (set! s3-6 (-> s3-6 next)) ) ) - (let* ((v1-105 s5-0) - (a0-60 (the-as dma-packet (-> v1-105 base))) - ) - (set! (-> a0-60 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-60 vif0) (new 'static 'vif-tag)) - (set! (-> a0-60 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-105 base) (the-as pointer (&+ a0-60 16))) - ) - (let* ((v1-106 s5-0) - (a0-62 (the-as gs-gif-tag (-> v1-106 base))) - ) - (set! (-> a0-62 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-62 regs) GIF_REGS_ALL_AD) - (set! (-> v1-106 base) (the-as pointer (&+ a0-62 16))) - ) - (let* ((v1-107 s5-0) - (a0-64 (-> v1-107 base)) - ) - (set! (-> (the-as (pointer gs-frame) a0-64) 0) - (new 'static 'gs-frame :fbw #x2 :fbmsk #xffffff :fbp (-> *map-texture-base* vram-page)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-64) 1) (gs-reg64 frame-1)) - (set! (-> (the-as (pointer gs-alpha) a0-64) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-64) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-xy-offset) a0-64) 4) (new 'static 'gs-xy-offset)) - (set! (-> (the-as (pointer gs-reg64) a0-64) 5) (gs-reg64 xyoffset-1)) - (set! (-> v1-107 base) (&+ a0-64 48)) - ) + (dma-buffer-add-gs-set s5-0 + (frame-1 (new 'static 'gs-frame :fbw #x2 :fbmsk #xffffff :fbp (-> *map-texture-base* vram-page))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (xyoffset-1 (new 'static 'gs-xy-offset)) + ) (let ((s3-7 (the-as object (-> s5-0 base)))) (set! (-> (the-as (pointer uint128) s3-7)) (-> obj adgif-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) s3-7) 1) (-> obj adgif-tmpl quad 1)) @@ -2202,52 +2137,26 @@ ;; definition for method 19 of type minimap ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 11 (defmethod sub-draw-1-2 minimap ((obj minimap) (arg0 minimap-draw-work)) (local-vars (a3-4 int) (t0-4 int) (sv-48 vector) (sv-52 matrix) (sv-56 vector)) (let ((s5-0 (-> arg0 buf))) (reset-display-gs-state *display* s5-0) - (let* ((v1-0 s5-0) - (a0-2 (the-as dma-packet (-> v1-0 base))) - ) - (set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt))) - (set! (-> a0-2 vif0) (new 'static 'vif-tag)) - (set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (the-as pointer (&+ a0-2 16))) - ) - (let* ((v1-1 s5-0) - (a0-4 (the-as gs-gif-tag (-> v1-1 base))) - ) - (set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6)) - (set! (-> a0-4 regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (the-as pointer (&+ a0-4 16))) - ) - (let* ((s3-0 s5-0) - (s2-0 (-> s3-0 base)) - ) - (set! (-> (the-as (pointer gs-test) s2-0) 0) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) - (set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-alpha) s2-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-tex0) s2-0) 4) - (new 'static 'gs-tex0 - :tbw #x2 - :tcc #x1 - :th (log2 128) - :tw (log2 128) - :tbp0 (-> *map-texture-base* vram-block) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s2-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s2-0) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer uint64) s2-0) 10) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 11) (gs-reg64 texflush)) - (set! (-> s3-0 base) (&+ s2-0 96)) - ) + (dma-buffer-add-gs-set s5-0 + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (tex0-1 (new 'static 'gs-tex0 + :tbw #x2 + :tcc #x1 + :th (log2 128) + :tw (log2 128) + :tbp0 (-> *map-texture-base* vram-block) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (texflush 0) + ) (let ((f30-0 (-> *video-params* relative-x-scale))) (let ((v1-20 (the-as object (-> s5-0 base))) (t0-0 (the int (* 112.0 f30-0))) @@ -2295,30 +2204,9 @@ ) ) (&+! (-> s5-0 base) 112) - (let* ((v1-25 s5-0) - (a0-20 (the-as dma-packet (-> v1-25 base))) - ) - (set! (-> a0-20 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) - (set! (-> a0-20 vif0) (new 'static 'vif-tag)) - (set! (-> a0-20 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-25 base) (the-as pointer (&+ a0-20 16))) - ) - (let* ((v1-26 s5-0) - (a0-22 (the-as gs-gif-tag (-> v1-26 base))) - ) - (set! (-> a0-22 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) - (set! (-> a0-22 regs) GIF_REGS_ALL_AD) - (set! (-> v1-26 base) (the-as pointer (&+ a0-22 16))) - ) - (let* ((v1-27 s5-0) - (a0-24 (-> v1-27 base)) - ) - (set! (-> (the-as (pointer gs-test) a0-24) 0) - (new 'static 'gs-test :ate #x1 :atst (gs-atest greater) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-24) 1) (gs-reg64 test-1)) - (set! (-> v1-27 base) (&+ a0-24 16)) - ) + (dma-buffer-add-gs-set s5-0 + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest greater) :zte #x1 :ztst (gs-ztest always))) + ) (set! sv-48 (new-stack-vector0)) (let ((v1-29 (new 'stack-no-clear 'matrix))) (set! (-> v1-29 quad 0) (the-as uint128 0)) diff --git a/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc b/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc index 38ddddb932..0f68406499 100644 --- a/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc +++ b/test/decompiler/reference/jak2/engine/ui/progress/progress_REF.gc @@ -542,7 +542,7 @@ (cond (*progress-process* (deactivate (-> *progress-process* 0)) - (set! (-> *blit-displays-work* menu-mode) (the-as basic #t)) + (set! (-> *blit-displays-work* menu-mode) #t) (set! *progress-process* (process-spawn progress arg1 :to arg0 :stack (&-> *progress-stack* 14336))) (set-master-mode 'progress) ) @@ -1534,7 +1534,7 @@ ) ) (when (hud-hidden?) - (set! (-> *blit-displays-work* menu-mode) (the-as basic #t)) + (set! (-> *blit-displays-work* menu-mode) #t) (set! (-> self pos-transition) (seek-ease (-> self pos-transition) f30-0 diff --git a/test/decompiler/reference/jak2/engine/util/capture_REF.gc b/test/decompiler/reference/jak2/engine/util/capture_REF.gc index 105d7a4829..30f59103f7 100644 --- a/test/decompiler/reference/jak2/engine/util/capture_REF.gc +++ b/test/decompiler/reference/jak2/engine/util/capture_REF.gc @@ -6,13 +6,13 @@ ;; definition for function gs-set-default-store-image ;; INFO: Used lq/sq -(defun gs-set-default-store-image ((arg0 gs-store-image-packet) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int)) +(defun gs-set-default-store-image ((arg0 gs-store-image-packet) (arg1 int) (arg2 int) (arg3 gs-psm) (arg4 int) (arg5 int) (arg6 int) (arg7 int)) (set! (-> arg0 vifcode 0) (new 'static 'vif-tag)) (set! (-> arg0 vifcode 1) (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd mskpath3))) (set! (-> arg0 vifcode 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)) (set! (-> arg0 vifcode 3) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) (set! (-> arg0 giftag) (new 'static 'gif-tag :nloop #x5 :eop #x1 :nreg #x1 :regs0 (gif-reg-id a+d))) - (set! (-> arg0 bitbltbuf) (new 'static 'gs-bitbltbuf :sbp arg1 :sbw arg2 :spsm arg3)) + (set! (-> arg0 bitbltbuf) (new 'static 'gs-bitbltbuf :sbp arg1 :sbw arg2 :spsm (the-as int arg3))) (set! (-> arg0 bitbltbuf-addr) (gs-reg64 bitbltbuf)) (set! (-> arg0 trxpos) (new 'static 'gs-trxpos :ssax arg4 :ssay arg5)) (set! (-> arg0 trxpos-addr) (gs-reg64 trxpos)) @@ -41,7 +41,7 @@ (let ((s4-0 (new 'stack 'file-stream *image-name* 'write))) (let ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf data))) (let ((s2-0 (new 'static 'gs-store-image-packet))) - (gs-set-default-store-image s2-0 #x3300 (/ gp-0 64) 0 0 0 gp-0 s5-0) + (gs-set-default-store-image s2-0 #x3300 (/ gp-0 64) (gs-psm ct32) 0 0 gp-0 s5-0) (flush-cache 0) (gs-store-image s2-0 s3-0) ) diff --git a/test/decompiler/reference/jak2/engine/util/profile_REF.gc b/test/decompiler/reference/jak2/engine/util/profile_REF.gc index 497a2d784d..189ba9540f 100644 --- a/test/decompiler/reference/jak2/engine/util/profile_REF.gc +++ b/test/decompiler/reference/jak2/engine/util/profile_REF.gc @@ -561,48 +561,20 @@ ;; definition for method 10 of type profile-array ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. +;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 7 (defmethod draw-bars! profile-array ((obj profile-array) (arg0 dma-buffer) (arg1 int)) (local-vars (sv-16 (function _varargs_ object)) (sv-32 (function _varargs_ object))) - (let* ((v1-0 arg0) - (a0-1 (the-as object (-> v1-0 base))) - ) - (set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))) - (set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag)) - (set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16)) - ) - (let* ((v1-1 arg0) - (a0-3 (the-as object (-> v1-1 base))) - ) - (set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9)) - (set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD) - (set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16)) - ) - (let* ((v1-2 arg0) - (a0-5 (-> v1-2 base)) - ) - (set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer gs-zbuf) a0-5) 2) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-5) 4) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) - (set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 test-1)) - (set! (-> (the-as (pointer uint64) a0-5) 6) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 pabe)) - (set! (-> (the-as (pointer gs-clamp) a0-5) 8) - (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-5) 9) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-tex1) a0-5) 10) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 11) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-texa) a0-5) 12) (new 'static 'gs-texa :ta1 #x80)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 13) (gs-reg64 texa)) - (set! (-> (the-as (pointer gs-texclut) a0-5) 14) (new 'static 'gs-texclut :cbw #x4)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 15) (gs-reg64 texclut)) - (set! (-> (the-as (pointer uint64) a0-5) 16) (the-as uint *fog-color*)) - (set! (-> (the-as (pointer gs-reg64) a0-5) 17) (gs-reg64 fogcol)) - (set! (-> v1-2 base) (&+ a0-5 144)) - ) + (dma-buffer-add-gs-set arg0 + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)) + (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always))) + (pabe 0) + (clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (texa (new 'static 'gs-texa :ta1 #x80)) + (texclut (new 'static 'gs-texclut :cbw #x4)) + (fogcol *fog-color*) + ) (let ((v1-5 (* (+ *profile-x* (/ *profile-w* 2)) 16)) (a0-9 (-> arg0 base)) ) diff --git a/test/decompiler/reference/jak2/levels/fortress/ammo_dump/fort-robotank-turret_REF.gc b/test/decompiler/reference/jak2/levels/fortress/ammo_dump/fort-robotank-turret_REF.gc index d64264ed65..98ea019547 100644 --- a/test/decompiler/reference/jak2/levels/fortress/ammo_dump/fort-robotank-turret_REF.gc +++ b/test/decompiler/reference/jak2/levels/fortress/ammo_dump/fort-robotank-turret_REF.gc @@ -864,127 +864,126 @@ (with-dma-buffer-add-bucket ((v1-15 (-> *display* frames (-> *display* on-screen) global-buf)) (bucket-id debug-no-zbuf1) ) - (let ((a1-1 (-> s5-0 0))) - (let ((t3-0 (-> s5-0 1)) - (t2-0 (-> s5-0 2)) - (a3-0 (-> s5-0 3)) - (t0-0 (make-u128 0 (the-as uint #x4024c00000008001))) - (t1-0 #x4141) - ) - (+! (-> a1-1 z) -8192) - (+! (-> t3-0 z) -8192) - (+! (-> t2-0 z) -8192) - (+! (-> a3-0 z) -8192) - (let ((a0-28 (-> v1-15 base))) - (let* ((t4-0 v1-15) - (t5-0 (-> t4-0 base)) - ) - (set! (-> (the-as (pointer int64) t5-0)) #x10000000) - (s.w! (+ t5-0 8) 0) - (let ((t6-1 #x50000000)) - (s.w! (+ t5-0 12) t6-1) - ) - (set! (-> t4-0 base) (&+ t5-0 16)) - ) - (let* ((t4-1 v1-15) - (t5-2 (-> t4-1 base)) - ) - (set! (-> (the-as (pointer uint64) t5-2)) t0-0) - (s.d! (+ t5-2 8) t1-0) - (set! (-> t4-1 base) (&+ t5-2 16)) - ) - (let* ((t4-2 v1-15) - (t5-4 (-> t4-2 base)) - ) - (set! (-> (the-as (pointer uint128) t5-4)) (-> gp-0 quad)) - (let ((t6-3 (-> a1-1 quad))) - (s.q! (+ t5-4 16) t6-3) - ) - (let ((t6-4 (-> gp-0 quad))) - (s.q! (+ t5-4 32) t6-4) - ) - (let ((t6-5 (-> t3-0 quad))) - (s.q! (+ t5-4 48) t6-5) - ) - (set! (-> t4-2 base) (&+ t5-4 64)) - ) - (let* ((t4-3 v1-15) - (t5-6 (-> t4-3 base)) - ) - (set! (-> (the-as (pointer uint64) t5-6)) t0-0) - (s.d! (+ t5-6 8) t1-0) - (set! (-> t4-3 base) (&+ t5-6 16)) - ) - (let* ((t4-4 v1-15) - (t5-8 (-> t4-4 base)) - ) - (set! (-> (the-as (pointer uint128) t5-8)) (-> gp-0 quad)) - (let ((t3-1 (-> t3-0 quad))) - (s.q! (+ t5-8 16) t3-1) - ) - (let ((t3-2 (-> gp-0 quad))) - (s.q! (+ t5-8 32) t3-2) - ) - (let ((t3-3 (-> t2-0 quad))) - (s.q! (+ t5-8 48) t3-3) - ) - (set! (-> t4-4 base) (&+ t5-8 64)) - ) - (let* ((t3-5 v1-15) - (t4-5 (-> t3-5 base)) - ) - (set! (-> (the-as (pointer uint64) t4-5)) t0-0) - (s.d! (+ t4-5 8) t1-0) - (set! (-> t3-5 base) (&+ t4-5 16)) - ) - (let* ((t3-6 v1-15) - (t4-7 (-> t3-6 base)) - ) - (set! (-> (the-as (pointer uint128) t4-7)) (-> gp-0 quad)) - (let ((t2-1 (-> t2-0 quad))) - (s.q! (+ t4-7 16) t2-1) - ) - (let ((t2-2 (-> gp-0 quad))) - (s.q! (+ t4-7 32) t2-2) - ) - (let ((t2-3 (-> a3-0 quad))) - (s.q! (+ t4-7 48) t2-3) - ) - (set! (-> t3-6 base) (&+ t4-7 64)) - ) - (let* ((t2-5 v1-15) - (t3-7 (-> t2-5 base)) - ) - (set! (-> (the-as (pointer uint64) t3-7)) t0-0) - (s.d! (+ t3-7 8) t1-0) - (set! (-> t2-5 base) (&+ t3-7 16)) - ) - (let* ((t0-2 v1-15) - (t1-1 (-> t0-2 base)) - ) - (set! (-> (the-as (pointer uint128) t1-1)) (-> gp-0 quad)) - (let ((a3-1 (-> a3-0 quad))) - (s.q! (+ t1-1 16) a3-1) - ) - (let ((a3-2 (-> gp-0 quad))) - (s.q! (+ t1-1 32) a3-2) - ) - (let ((a1-2 (-> a1-1 quad))) - (s.q! (+ t1-1 48) a1-2) - ) - (set! (-> t0-2 base) (&+ t1-1 64)) - ) - (let ((a3-6 (/ (the-as int (+ (- -16 (the-as int a0-28)) (the-as int (-> v1-15 base)))) 16))) - (cond - ((nonzero? a3-6) - (logior! (-> (the-as (pointer uint64) a0-28)) (shr (shl a3-6 48) 48)) - (let ((a3-10 (logior (l.d (&+ a0-28 8)) (shl (shr (shl a3-6 48) 48) 32)))) - (s.d! (+ a0-28 8) a3-10) - ) + (let ((a1-1 (-> s5-0 0)) + (t3-0 (-> s5-0 1)) + (t2-0 (-> s5-0 2)) + (a3-0 (-> s5-0 3)) + (t0-0 (make-u128 0 (the-as uint #x4024c00000008001))) + (t1-0 #x4141) + ) + (+! (-> a1-1 z) -8192) + (+! (-> t3-0 z) -8192) + (+! (-> t2-0 z) -8192) + (+! (-> a3-0 z) -8192) + (let ((a0-28 (-> v1-15 base))) + (let* ((t4-0 v1-15) + (t5-0 (-> t4-0 base)) ) - (else - (set! (-> v1-15 base) a0-28) - ) + (set! (-> (the-as (pointer int64) t5-0)) #x10000000) + (s.w! (+ t5-0 8) 0) + (let ((t6-1 #x50000000)) + (s.w! (+ t5-0 12) t6-1) + ) + (set! (-> t4-0 base) (&+ t5-0 16)) + ) + (let* ((t4-1 v1-15) + (t5-2 (-> t4-1 base)) + ) + (set! (-> (the-as (pointer uint64) t5-2)) t0-0) + (s.d! (+ t5-2 8) t1-0) + (set! (-> t4-1 base) (&+ t5-2 16)) + ) + (let* ((t4-2 v1-15) + (t5-4 (-> t4-2 base)) + ) + (set! (-> (the-as (pointer uint128) t5-4)) (-> gp-0 quad)) + (let ((t6-3 (-> a1-1 quad))) + (s.q! (+ t5-4 16) t6-3) + ) + (let ((t6-4 (-> gp-0 quad))) + (s.q! (+ t5-4 32) t6-4) + ) + (let ((t6-5 (-> t3-0 quad))) + (s.q! (+ t5-4 48) t6-5) + ) + (set! (-> t4-2 base) (&+ t5-4 64)) + ) + (let* ((t4-3 v1-15) + (t5-6 (-> t4-3 base)) + ) + (set! (-> (the-as (pointer uint64) t5-6)) t0-0) + (s.d! (+ t5-6 8) t1-0) + (set! (-> t4-3 base) (&+ t5-6 16)) + ) + (let* ((t4-4 v1-15) + (t5-8 (-> t4-4 base)) + ) + (set! (-> (the-as (pointer uint128) t5-8)) (-> gp-0 quad)) + (let ((t3-1 (-> t3-0 quad))) + (s.q! (+ t5-8 16) t3-1) + ) + (let ((t3-2 (-> gp-0 quad))) + (s.q! (+ t5-8 32) t3-2) + ) + (let ((t3-3 (-> t2-0 quad))) + (s.q! (+ t5-8 48) t3-3) + ) + (set! (-> t4-4 base) (&+ t5-8 64)) + ) + (let* ((t3-5 v1-15) + (t4-5 (-> t3-5 base)) + ) + (set! (-> (the-as (pointer uint64) t4-5)) t0-0) + (s.d! (+ t4-5 8) t1-0) + (set! (-> t3-5 base) (&+ t4-5 16)) + ) + (let* ((t3-6 v1-15) + (t4-7 (-> t3-6 base)) + ) + (set! (-> (the-as (pointer uint128) t4-7)) (-> gp-0 quad)) + (let ((t2-1 (-> t2-0 quad))) + (s.q! (+ t4-7 16) t2-1) + ) + (let ((t2-2 (-> gp-0 quad))) + (s.q! (+ t4-7 32) t2-2) + ) + (let ((t2-3 (-> a3-0 quad))) + (s.q! (+ t4-7 48) t2-3) + ) + (set! (-> t3-6 base) (&+ t4-7 64)) + ) + (let* ((t2-5 v1-15) + (t3-7 (-> t2-5 base)) + ) + (set! (-> (the-as (pointer uint64) t3-7)) t0-0) + (s.d! (+ t3-7 8) t1-0) + (set! (-> t2-5 base) (&+ t3-7 16)) + ) + (let* ((t0-2 v1-15) + (t1-1 (-> t0-2 base)) + ) + (set! (-> (the-as (pointer uint128) t1-1)) (-> gp-0 quad)) + (let ((a3-1 (-> a3-0 quad))) + (s.q! (+ t1-1 16) a3-1) + ) + (let ((a3-2 (-> gp-0 quad))) + (s.q! (+ t1-1 32) a3-2) + ) + (let ((a1-2 (-> a1-1 quad))) + (s.q! (+ t1-1 48) a1-2) + ) + (set! (-> t0-2 base) (&+ t1-1 64)) + ) + (let ((a3-6 (/ (the-as int (+ (- -16 (the-as int a0-28)) (the-as int (-> v1-15 base)))) 16))) + (cond + ((nonzero? a3-6) + (logior! (-> (the-as (pointer uint64) a0-28)) (shr (shl a3-6 48) 48)) + (let ((a3-10 (logior (l.d (&+ a0-28 8)) (shl (shr (shl a3-6 48) 48) 32)))) + (s.d! (+ a0-28 8) a3-10) + ) + ) + (else + (set! (-> v1-15 base) a0-28) ) ) ) diff --git a/test/decompiler/reference/jak2/levels/intro/vortex_REF.gc b/test/decompiler/reference/jak2/levels/intro/vortex_REF.gc index bc1a897b91..38f4ea07b5 100644 --- a/test/decompiler/reference/jak2/levels/intro/vortex_REF.gc +++ b/test/decompiler/reference/jak2/levels/intro/vortex_REF.gc @@ -32,7 +32,7 @@ ;; definition for function draw-vortex ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. -;; ERROR: Failed store: (s.w! (+ v1-76 8) 0) at op 268 +;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 34 (defun draw-vortex () (rlet ((vf27 :class vf)) (when (and (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask sky)) @@ -43,34 +43,11 @@ (with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf)) (bucket-id sky-draw) ) - (let ((v1-17 s4-0)) - (let ((a0-6 (the-as dma-packet (-> v1-17 base)))) - (set! (-> a0-6 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt))) - (set! (-> a0-6 vif0) (new 'static 'vif-tag)) - (set! (-> a0-6 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-17 base) (the-as pointer (&+ a0-6 16))) - ) - ) - (let ((v1-18 s4-0)) - (let ((a0-8 (the-as gs-gif-tag (-> v1-18 base)))) - (set! (-> a0-8 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3)) - (set! (-> a0-8 regs) GIF_REGS_ALL_AD) - (set! (-> v1-18 base) (the-as pointer (&+ a0-8 16))) - ) - ) - (let ((v1-19 s4-0)) - (let ((a0-10 (-> v1-19 base))) - (set! (-> (the-as (pointer gs-zbuf) a0-10) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) - (set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 zbuf-1)) - (set! (-> (the-as (pointer gs-test) a0-10) 2) - (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) - ) - (set! (-> (the-as (pointer gs-reg64) a0-10) 3) (gs-reg64 test-1)) - (set! (-> (the-as (pointer gs-rgbaq) a0-10) 4) (new 'static 'gs-rgbaq :b #x40 :q 1.0)) - (set! (-> (the-as (pointer gs-reg64) a0-10) 5) (gs-reg64 rgbaq)) - (set! (-> v1-19 base) (&+ a0-10 48)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))) + (test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))) + (rgbaq (new 'static 'gs-rgbaq :b #x40 :q 1.0)) + ) (let ((v1-20 (-> s4-0 base))) (set! (-> (the-as (pointer uint128) v1-20)) (-> *sky-work* sprite-tmpl dma-vif quad)) (set! (-> (the-as (pointer uint128) v1-20) 1) (-> *sky-work* sprite-tmpl quad 1)) @@ -81,46 +58,24 @@ (set-vector! (the-as vector4w (&+ v1-23 16)) #x9000 #x8d00 0 0) ) (&+! (-> s4-0 base) 32) - (let ((v1-27 s4-0)) - (let ((a0-19 (the-as dma-packet (-> v1-27 base)))) - (set! (-> a0-19 dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt))) - (set! (-> a0-19 vif0) (new 'static 'vif-tag)) - (set! (-> a0-19 vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-27 base) (the-as pointer (&+ a0-19 16))) - ) - ) - (let ((v1-28 s4-0)) - (let ((a0-21 (the-as gs-gif-tag (-> v1-28 base)))) - (set! (-> a0-21 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5)) - (set! (-> a0-21 regs) GIF_REGS_ALL_AD) - (set! (-> v1-28 base) (the-as pointer (&+ a0-21 16))) - ) - ) - (let ((s3-0 s4-0)) - (let ((s2-0 (-> s3-0 base))) - (set! (-> (the-as (pointer gs-tex0) s2-0) 0) (new 'static 'gs-tex0 - :tbp0 #x100 - :tbw #x2 - :psm #x1b - :tcc #x1 - :cbp #x300 - :cld #x1 - :th (log2 128) - :tw (log2 128) - ) - ) - (set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 tex0-1)) - (set! (-> (the-as (pointer gs-tex1) s2-0) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 tex1-1)) - (set! (-> (the-as (pointer gs-clamp) s2-0) 4) (new 'static 'gs-clamp)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 clamp-1)) - (set! (-> (the-as (pointer gs-alpha) s2-0) 6) (new 'static 'gs-alpha :b #x1 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) s2-0) 8) (the-as uint 0)) - (set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 texflush)) - (set! (-> s3-0 base) (&+ s2-0 80)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (tex0-1 + (new 'static 'gs-tex0 + :tbp0 #x100 + :tbw #x2 + :psm #x1b + :tcc #x1 + :cbp #x300 + :cld #x1 + :th (log2 128) + :tw (log2 128) + ) + ) + (tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) + (clamp-1 (new 'static 'gs-clamp)) + (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)) + (texflush 0) + ) (init-vortex-regs) (.lvf vf27 (&-> *vortex-work* giftag quad)) (set-tex-offset (the-as int (-> *vortex-work* off-s-0)) (the-as int (-> *vortex-work* off-t-0))) @@ -138,30 +93,10 @@ (set! (-> s3-1 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-54)) ) ) - (let ((v1-58 s4-0)) - (let ((a0-32 (the-as dma-packet (-> v1-58 base)))) - (set! (-> a0-32 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))) - (set! (-> a0-32 vif0) (new 'static 'vif-tag)) - (set! (-> a0-32 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1)) - (set! (-> v1-58 base) (the-as pointer (&+ a0-32 16))) - ) - ) - (let ((v1-59 s4-0)) - (let ((a0-34 (the-as gs-gif-tag (-> v1-59 base)))) - (set! (-> a0-34 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2)) - (set! (-> a0-34 regs) GIF_REGS_ALL_AD) - (set! (-> v1-59 base) (the-as pointer (&+ a0-34 16))) - ) - ) - (let ((v1-60 s4-0)) - (let ((a0-36 (-> v1-60 base))) - (set! (-> (the-as (pointer gs-alpha) a0-36) 0) (new 'static 'gs-alpha :b #x2 :d #x1)) - (set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 alpha-1)) - (set! (-> (the-as (pointer uint64) a0-36) 2) (the-as uint 1)) - (set! (-> (the-as (pointer gs-reg64) a0-36) 3) (gs-reg64 colclamp)) - (set! (-> v1-60 base) (&+ a0-36 32)) - ) - ) + (dma-buffer-add-gs-set s4-0 + (alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1)) + (colclamp (new 'static 'gs-color-clamp :clamp #x1)) + ) (set-tex-offset (the-as int (-> *vortex-work* off-s-1)) (the-as int (-> *vortex-work* off-t-1))) (let ((s3-2 (the-as dma-packet (-> s4-0 base)))) (&+! (-> s4-0 base) 16) @@ -195,7 +130,3 @@ (none) ) ) - - - -