From 6884b0f73e61e697fa3acdd7d3c5680b640cee14 Mon Sep 17 00:00:00 2001 From: ManDude <7569514+ManDude@users.noreply.github.com> Date: Thu, 4 May 2023 23:34:09 +0100 Subject: [PATCH] start `blit-displays` decomp & renderer + improve decompilation of some DMA macros (#2616) Adds sprite distort, fixes buggy sprite rendering in progress, adds scissoring support (used in various scrolling menus) and a very basic implementation of `blit-displays`. This is enough to make the fade effect in the progress menu work, along with all the menus working properly without needing to use the REPL. This does not make screen flipping and the filter when failing a mission work. Added support in the decompiler for detecting `dma-buffer-add-gs-set` and `dma-buffer-add-gs-set-flusha` and updated all of the Jak 2 code to use it. Readability improved! Fixes decompiler issue with `with-dma-buffer-add-bucket` not inlining forms which broke syntax. Fixes store error warnings showing up for non-existent stores, there is now a dedicated pass for this at the end. I started work on making `BITBLTBUF` stuff work in the DirectRenderer, but stopped for now because it wasn't strictly necessary. It will still assert like before. --- common/goos/PrettyPrinter2.cpp | 31 +- decompiler/IR2/AtomicOpForm.cpp | 5 - decompiler/IR2/Form.cpp | 26 +- decompiler/IR2/Form.h | 4 +- decompiler/ObjectFile/ObjectFileDB.h | 5 +- decompiler/ObjectFile/ObjectFileDB_IR2.cpp | 18 + decompiler/analysis/insert_lets.cpp | 495 ++++++- decompiler/config/jak2/all-types.gc | 36 +- .../config/jak2/ntsc_v1/type_casts.jsonc | 1111 +--------------- .../config/jak2/ntsc_v1/var_names.jsonc | 8 +- game/CMakeLists.txt | 1 + .../graphics/opengl_renderer/BlitDisplays.cpp | 74 ++ game/graphics/opengl_renderer/BlitDisplays.h | 19 + .../graphics/opengl_renderer/BucketRenderer.h | 5 + .../opengl_renderer/DirectRenderer.cpp | 238 +++- .../graphics/opengl_renderer/DirectRenderer.h | 38 +- .../opengl_renderer/OpenGLRenderer.cpp | 217 +-- .../graphics/opengl_renderer/OpenGLRenderer.h | 6 + game/graphics/opengl_renderer/Shader.cpp | 1 + .../shaders/direct_basic_textured.frag | 17 + .../shaders/direct_basic_textured.vert | 3 + .../shaders/sprite_distort.frag | 2 +- .../shaders/sprite_distort.vert | 1 + .../shaders/sprite_distort_instanced.frag | 2 +- .../shaders/sprite_distort_instanced.vert | 1 + .../opengl_renderer/sprite/Sprite3.cpp | 64 +- .../graphics/opengl_renderer/sprite/Sprite3.h | 6 +- .../sprite/Sprite3_Distort.cpp | 30 +- game/graphics/texture/TexturePool.cpp | 7 +- game/graphics/texture/TexturePool.h | 7 +- goal_src/jak2/engine/collide/collide-probe.gc | 2 +- goal_src/jak2/engine/debug/debug.gc | 169 ++- goal_src/jak2/engine/draw/drawable.gc | 102 +- goal_src/jak2/engine/game/main.gc | 29 +- goal_src/jak2/engine/game/settings.gc | 2 +- .../jak2/engine/gfx/background/background.gc | 2 +- goal_src/jak2/engine/gfx/blit-displays-h.gc | 38 +- goal_src/jak2/engine/gfx/blit-displays.gc | 221 +++- goal_src/jak2/engine/gfx/foreground/bones.gc | 2 +- goal_src/jak2/engine/gfx/foreground/eye.gc | 1080 ++------------- .../jak2/engine/gfx/foreground/foreground.gc | 2 +- .../jak2/engine/gfx/generic/generic-merc.gc | 2 +- .../jak2/engine/gfx/generic/generic-vu1.gc | 2 +- goal_src/jak2/engine/gfx/hw/display.gc | 141 +- goal_src/jak2/engine/gfx/hw/gs.gc | 6 +- goal_src/jak2/engine/gfx/merc/emerc-vu1.gc | 2 +- goal_src/jak2/engine/gfx/merc/emerc.gc | 23 +- goal_src/jak2/engine/gfx/merc/merc-vu1.gc | 2 +- goal_src/jak2/engine/gfx/merc/merc.gc | 60 +- goal_src/jak2/engine/gfx/ocean/ocean-h.gc | 4 +- goal_src/jak2/engine/gfx/ocean/ocean-mid.gc | 2 +- goal_src/jak2/engine/gfx/ocean/ocean-near.gc | 29 +- .../jak2/engine/gfx/ocean/ocean-texture.gc | 982 +++----------- goal_src/jak2/engine/gfx/ocean/ocean-vu0.gc | 2 +- goal_src/jak2/engine/gfx/ocean/ocean.gc | 94 +- goal_src/jak2/engine/gfx/shrub/shrubbery.gc | 42 +- goal_src/jak2/engine/gfx/sky/sky-tng.gc | 569 +++----- .../jak2/engine/gfx/sprite/sprite-distort.gc | 109 +- .../jak2/engine/gfx/sprite/sprite-glow.gc | 2 +- goal_src/jak2/engine/gfx/sprite/sprite.gc | 135 +- goal_src/jak2/engine/gfx/texture/texture.gc | 303 +---- goal_src/jak2/engine/gfx/tfrag/tfrag-near.gc | 2 +- goal_src/jak2/engine/gfx/tfrag/tfrag.gc | 2 +- goal_src/jak2/engine/gfx/tie/tie.gc | 33 +- goal_src/jak2/engine/gfx/warp.gc | 12 + goal_src/jak2/engine/scene/scene.gc | 164 +-- goal_src/jak2/engine/ui/bigmap-h.gc | 2 +- goal_src/jak2/engine/ui/bigmap.gc | 305 +---- goal_src/jak2/engine/ui/minimap.gc | 173 +-- goal_src/jak2/engine/ui/progress/progress.gc | 4 +- goal_src/jak2/engine/util/capture.gc | 12 +- goal_src/jak2/engine/util/profile.gc | 51 +- goal_src/jak2/levels/intro/vortex.gc | 119 +- goal_src/jak2/pc/debug/default-menu-pc.gc | 6 +- .../reference/jak1/decompiler-macros.gc | 200 +++ .../jak1/engine/gfx/tie/tie-near_REF.gc | 65 +- .../reference/jak2/decompiler-macros.gc | 200 +++ .../reference/jak2/engine/debug/debug_REF.gc | 167 ++- .../jak2/engine/draw/drawable_REF.gc | 104 +- .../reference/jak2/engine/game/main_REF.gc | 29 +- .../jak2/engine/game/settings_REF.gc | 2 +- .../jak2/engine/gfx/blit-displays-h_REF.gc | 42 +- .../jak2/engine/gfx/foreground/eye_REF.gc | 1160 ++--------------- .../jak2/engine/gfx/hw/display_REF.gc | 142 +- .../reference/jak2/engine/gfx/hw/gs_REF.gc | 6 +- .../jak2/engine/gfx/merc/emerc_REF.gc | 24 +- .../jak2/engine/gfx/merc/merc_REF.gc | 60 +- .../jak2/engine/gfx/ocean/ocean-h_REF.gc | 4 +- .../jak2/engine/gfx/ocean/ocean-near_REF.gc | 28 +- .../engine/gfx/ocean/ocean-texture_REF.gc | 993 +++----------- .../jak2/engine/gfx/ocean/ocean_REF.gc | 92 +- .../jak2/engine/gfx/shrub/shrubbery_REF.gc | 69 +- .../jak2/engine/gfx/sky/sky-tng_REF.gc | 465 ++----- .../engine/gfx/sprite/sprite-distort_REF.gc | 53 +- .../jak2/engine/gfx/sprite/sprite_REF.gc | 119 +- .../jak2/engine/gfx/texture/texture_REF.gc | 290 +---- .../reference/jak2/engine/gfx/tie/tie_REF.gc | 32 +- .../reference/jak2/engine/scene/scene_REF.gc | 161 +-- .../reference/jak2/engine/ui/bigmap-h_REF.gc | 6 +- .../reference/jak2/engine/ui/bigmap_REF.gc | 314 +---- .../reference/jak2/engine/ui/minimap_REF.gc | 176 +-- .../jak2/engine/ui/progress/progress_REF.gc | 4 +- .../reference/jak2/engine/util/capture_REF.gc | 6 +- .../reference/jak2/engine/util/profile_REF.gc | 52 +- .../ammo_dump/fort-robotank-turret_REF.gc | 239 ++-- .../reference/jak2/levels/intro/vortex_REF.gc | 125 +- 106 files changed, 3706 insertions(+), 9246 deletions(-) create mode 100644 game/graphics/opengl_renderer/BlitDisplays.cpp create mode 100644 game/graphics/opengl_renderer/BlitDisplays.h 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) ) ) - - - -