From bf11ef3934c8cc86b910d3376c2429028c4cf613 Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Sat, 12 Feb 2022 22:39:25 -0500 Subject: [PATCH] decomp: `eye` (#778) * decomp: `eye` close just need a pile of casts for the rendering code * stash * decomp: `eye` mostly cleaned up, xmm reg issue with `pextlb` * waitin * update ref tests and gsrc * update reference tests --- decompiler/config/all-types.gc | 13 +- .../jak1_ntsc_black_label/label_types.jsonc | 9 +- .../stack_structures.jsonc | 5 + .../jak1_ntsc_black_label/type_casts.jsonc | 104 ++ goal_src/engine/dma/dma-h.gc | 1 + goal_src/engine/game/generic-obs.gc | 2 +- goal_src/engine/gfx/eye-h.gc | 64 +- goal_src/engine/gfx/eye.gc | 1259 ++++++++++++++- .../engine/draw/process-drawable_REF.gc | 2 +- .../reference/engine/game/generic-obs_REF.gc | 2 +- .../reference/engine/gfx/eye-h_REF.gc | 18 +- .../reference/engine/gfx/eye_REF.gc | 1233 +++++++++++++++ .../engine/gfx/sparticle/sparticle-h_REF.gc | 149 -- .../gfx/sparticle/sparticle-launcher-h_REF.gc | 215 --- .../gfx/sparticle/sparticle-launcher_REF.gc | 1359 ----------------- .../engine/gfx/sparticle/sparticle_REF.gc | 731 --------- .../reference/engine/ps2/timer_REF.gc | 13 +- .../sparticle/sparticle-launcher-h_REF.gc | 5 +- .../reference/engine/target/sidekick_REF.gc | 2 +- vendor.yaml | 2 +- 20 files changed, 2629 insertions(+), 2559 deletions(-) create mode 100644 test/decompiler/reference/engine/gfx/eye_REF.gc delete mode 100644 test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc delete mode 100644 test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc delete mode 100644 test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher_REF.gc delete mode 100644 test/decompiler/reference/engine/gfx/sparticle/sparticle_REF.gc diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index e946e93dcd..79d4f418e4 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -535,6 +535,7 @@ (pris-tex1 51) (bucket-52 52) (bucket-53 53) + (bucket-54 54) ;; eye::update-eyes ;; merc1 52 ;; generic1 53 @@ -7946,7 +7947,7 @@ (deftype art-joint-anim (art-element) ;; figured out manually from custom inspect. - ((_unknown (pointer int16) :offset 4) ;; no clue. used in mem-usage + ((_unknown (pointer int16) :offset 4) ;; no clue. used in mem-usage and merc-eye-anim (speed float :offset 20) (artist-base float :offset 24) (artist-step float :offset 28) @@ -14014,11 +14015,11 @@ ) (deftype eye-control (structure) - ((process uint64 :offset-assert 0) + ((process handle :offset-assert 0) (random-time uint16 :offset-assert 8) (level uint16 :offset-assert 10) (blink float :offset-assert 12) - (shaders uint32 :offset-assert 16) + (shaders (inline-array adgif-shader) :offset-assert 16) (left eye :inline :offset-assert 32) (right eye :inline :offset-assert 64) ) @@ -19909,7 +19910,7 @@ (define-extern clone-anim-once (function handle int symbol string none :behavior process-drawable)) (define-extern convert-to-hud-object (function process-drawable hud none :behavior hud)) (define-extern clone-anim (function handle int symbol string none :behavior process-drawable)) -(define-extern merc-eye-anim (function process-drawable none)) +(define-extern merc-eye-anim (function manipy none)) (define-extern ja-anim-done? (function process symbol)) (define-extern command-get-camera (function object state state)) (define-extern camera-anim (function symbol basic entity (pointer process) :behavior camera-tracker)) ;; unused @@ -21829,8 +21830,8 @@ ;; - Functions -(define-extern convert-eye-data function) -(define-extern render-eyes function) +(define-extern convert-eye-data (function box8s uint128 float)) +(define-extern render-eyes (function dma-buffer eye-control int pointer)) (define-extern update-eyes (function none)) ;; - Unknowns diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index c57e6d3c05..8891b03ed8 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -330,8 +330,6 @@ "ocean-frames": [["L1", "(pointer uint32)", 16384]], - "eye": [["L36", "eye-work"]], - "shadow-cpu": [ ["L122", "shadow-data"], ["L121", "vu-function"] @@ -2065,6 +2063,13 @@ ["L523", "float", true] // TODO - meters ], + "eye": [ + ["L36", "eye-work"], + ["L38", "float", true], + ["L40", "float", true], + ["L44", "uint64", true] + ], + "snow-bunny": [["L190", "attack-info"]], // please do not add things after this entry! git is dumb. diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index 2b8e02b82f..829b38c979 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -5467,5 +5467,10 @@ [112, "nav-gap-info"] ], + "merc-eye-anim": [ + [16, "box8s"], // 2 vectors, could be a boundingbox, or something else + [48, "vector"] + ], + "placeholder-do-not-add-below!": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 82a67d1d16..ffe24f64ad 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -7146,5 +7146,109 @@ [106, "a0", "(inline-array vector)"] ], + "update-eyes": [ + [[19, 25], "a0", "dma-packet"], + [[28, 34], "a0", "gs-gif-tag"], + [39, "a0", "(pointer gs-test)"], + [41, "a0", "(pointer gs-reg64)"], + [[45, 50], "v1", "dma-packet"], + [[83, 89], "a0", "dma-packet"], + [[92, 98], "a0", "gs-gif-tag"], + [103, "a0", "(pointer gs-test)"], + [105, "a0", "(pointer gs-reg64)"], + [[109, 114], "v1", "dma-packet"], + [[147, 153], "a0", "dma-packet"], + [[156, 162], "a0", "gs-gif-tag"], + [167, "a0", "(pointer gs-test)"], + [169, "a0", "(pointer gs-reg64)"], + [[173, 178], "v1", "dma-packet"], + [212, "v1", "process-drawable"], + [218, "v1", "process-drawable"], + [[281, 286], "v1", "dma-packet"], + [[319, 324], "v1", "dma-packet"], + [[356, 362], "a0", "dma-packet"], + [[365, 371], "a0", "gs-gif-tag"], + [376, "a0", "(pointer gs-reg64)"], + [378, "a0", "(pointer gs-reg64)"], + [[382, 387], "v1", "dma-packet"], + [[415, 421], "a0", "dma-packet"], + [[424, 430], "a0", "gs-gif-tag"], + [435, "a0", "(pointer gs-reg64)"], + [437, "a0", "(pointer gs-reg64)"], + [[441, 446], "v1", "dma-packet"], + [[474, 480], "a0", "dma-packet"], + [[483, 489], "a0", "gs-gif-tag"], + [494, "a0", "(pointer gs-reg64)"], + [496, "a0", "(pointer gs-reg64)"], + [[500, 505], "v1", "dma-packet"] + ], + + "render-eyes": [ + [[45, 52], "v1", "dma-gif-packet"], + [[52, 64], "s0", "(pointer uint64)"], + [[68, 74], "a0", "dma-packet"], + [[77, 83], "a0", "gs-gif-tag"], + [95, "a0", "(pointer gs-scissor)"], + [97, "a0", "(pointer gs-reg64)"], + [[100, 135], "v1", "(inline-array vector4w)"], + [145, "v1", "(inline-array vector4w)"], + [[164, 170], "a2", "dma-packet"], + [[173, 179], "a2", "gs-gif-tag"], + [191, "a2", "(pointer gs-scissor)"], + [193, "a2", "(pointer gs-reg64)"], + [[199, 244], "a1", "(inline-array vector4w)"], + [250, "a1", "(inline-array vector4w)"], + [[253, 259], "a2", "dma-packet"], + [[262, 268], "a2", "gs-gif-tag"], + [280, "a2", "(pointer gs-scissor)"], + [282, "a2", "(pointer gs-reg64)"], + [[288, 337], "a1", "(inline-array vector4w)"], + [343, "v1", "(inline-array vector4w)"], + [[346, 352], "a0", "dma-packet"], + [[355, 361], "a0", "gs-gif-tag"], + [366, "a0", "(pointer gs-test)"], + [368, "a0", "(pointer gs-reg64)"], + [[373, 380], "v1", "(inline-array vector4w)"], + [[380, 392], "s0", "(pointer uint64)"], + [[412, 418], "a2", "dma-packet"], + [[421, 427], "a2", "gs-gif-tag"], + [439, "a2", "(pointer gs-scissor)"], + [441, "a2", "(pointer gs-reg64)"], + [[447, 497], "a1", "(inline-array vector4w)"], + [498, "a1", "(inline-array vector4w)"], + [[501, 507], "a2", "dma-packet"], + [[510, 516], "a2", "gs-gif-tag"], + [528, "a2", "(pointer gs-scissor)"], + [530, "a2", "(pointer gs-reg64)"], + [[536, 585], "a1", "(inline-array vector4w)"], + [591, "v1", "(inline-array vector4w)"], + [[594, 600], "a0", "dma-packet"], + [[603, 609], "a0", "gs-gif-tag"], + [614, "a0", "(pointer gs-test)"], + [616, "a0", "(pointer gs-reg64)"], + [[621, 628], "v1", "dma-gif-packet"], + [[628, 640], "s0", "(pointer uint64)"], + [641, "v1", "(inline-array dma-gif-packet)"], + [[673, 679], "a2", "dma-packet"], + [[682, 688], "a2", "gs-gif-tag"], + [700, "a2", "(pointer gs-scissor)"], + [702, "a2", "(pointer gs-reg64)"], + [[712, 759], "a1", "(inline-array vector4w)"], + [765, "a1", "(inline-array vector4w)"], + [[781, 787], "a2", "dma-packet"], + [[790, 796], "a2", "gs-gif-tag"], + [808, "a2", "(pointer gs-scissor)"], + [810, "a2", "(pointer gs-reg64)"], + [[820, 868], "a1", "(inline-array vector4w)"], + [874, "v1", "(inline-array vector4w)"] + ], + + "merc-eye-anim": [ + [[81, 86], "v1", "(pointer int64)"], + [[89, 94], "v1", "(pointer int64)"], + [[119, 125], "v1", "(pointer int64)"], + [[128, 134], "v1", "(pointer int64)"] + ], + "placeholder-do-not-add-below": [] } diff --git a/goal_src/engine/dma/dma-h.gc b/goal_src/engine/dma/dma-h.gc index 48072bd0a5..98611f04cd 100644 --- a/goal_src/engine/dma/dma-h.gc +++ b/goal_src/engine/dma/dma-h.gc @@ -269,6 +269,7 @@ (pris-tex1 51) (bucket-52 52) ;; merc (bucket-53 53) + (bucket-54 54) ;; eye::update-eyes ;; merc1 52 ;; generic1 53 diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index 843bd7755f..edf6ec2617 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -74,7 +74,7 @@ (merc-blend-shape self) ) (if (logtest? (-> self skel status) 384) - (merc-eye-anim self) + (merc-eye-anim (the-as manipy self)) ) ) (else diff --git a/goal_src/engine/gfx/eye-h.gc b/goal_src/engine/gfx/eye-h.gc index ba84ca6314..2f8db18ab5 100644 --- a/goal_src/engine/gfx/eye-h.gc +++ b/goal_src/engine/gfx/eye-h.gc @@ -5,67 +5,73 @@ ;; name in dgo: eye-h ;; dgos: GAME, ENGINE -;; definition of type eye +(define-extern get-eye-block (function int int int)) +(define-extern merc-eye-anim (function manipy none)) + +;; DECOMP BEGINS + (deftype eye (structure) - ((data uint128 2 :offset-assert 0) - (x float :offset 0) - (y float :offset 4) - (lid float :offset 8) - (iris-scale float :offset 16) - (pupil-scale float :offset 20) - (lid-scale float :offset 24) + ((data uint128 2 :offset-assert 0) + (x float :offset 0) + (y float :offset 4) + (lid float :offset 8) + (iris-scale float :offset 16) + (pupil-scale float :offset 20) + (lid-scale float :offset 24) ) :method-count-assert 9 :size-assert #x20 :flag-assert #x900000020 ) -;; definition of type eye-control + (deftype eye-control (structure) - ((process uint64 :offset-assert 0) - (random-time uint16 :offset-assert 8) - (level uint16 :offset-assert 10) - (blink float :offset-assert 12) - (shaders uint32 :offset-assert 16) - (left eye :inline :offset-assert 32) - (right eye :inline :offset-assert 64) + ((process handle :offset-assert 0) + (random-time uint16 :offset-assert 8) + (level uint16 :offset-assert 10) + (blink float :offset-assert 12) + (shaders (inline-array adgif-shader) :offset-assert 16) + (left eye :inline :offset-assert 32) + (right eye :inline :offset-assert 64) ) :method-count-assert 9 :size-assert #x60 :flag-assert #x900000060 ) -;; definition of type eye-control-array + (deftype eye-control-array (basic) - ((data eye-control 11 :inline :offset-assert 16) + ((data eye-control 11 :inline :offset-assert 16) ) :method-count-assert 9 :size-assert #x430 :flag-assert #x900000430 ) -;; definition of type eye-work + (deftype eye-work (structure) - ((sprite-tmpl dma-gif-packet :inline :offset-assert 0) - (sprite-tmpl2 dma-gif-packet :inline :offset-assert 32) - (adgif-tmpl dma-gif-packet :inline :offset-assert 64) - (blink-table float 10 :offset-assert 96) + ((sprite-tmpl dma-gif-packet :inline :offset-assert 0) + (sprite-tmpl2 dma-gif-packet :inline :offset-assert 32) + (adgif-tmpl dma-gif-packet :inline :offset-assert 64) + (blink-table float 10 :offset-assert 96) ) :method-count-assert 9 :size-assert #x88 :flag-assert #x900000088 ) -;; definition for symbol *eye-control-array*, type eye-control-array + (define *eye-control-array* (new 'static 'eye-control-array)) -;; failed to figure out what this is: (dotimes (v1-5 11) - (set! (-> *eye-control-array* data v1-5 process) (the-as uint #f)) - (set! (-> *eye-control-array* data v1-5 shaders) (the-as uint #f)) + (set! (-> *eye-control-array* data v1-5 process) (the-as handle #f)) + (set! (-> *eye-control-array* data v1-5 shaders) (the-as (inline-array adgif-shader) #f)) (set! (-> *eye-control-array* data v1-5 random-time) (the-as uint 60)) (set! (-> *eye-control-array* data v1-5 blink) 0.0) ) -(define-extern get-eye-block (function int int int)) -(defun-extern merc-eye-anim process-drawable none) +0 + + + + diff --git a/goal_src/engine/gfx/eye.gc b/goal_src/engine/gfx/eye.gc index 0d3fa65c49..f0966ddd8a 100644 --- a/goal_src/engine/gfx/eye.gc +++ b/goal_src/engine/gfx/eye.gc @@ -5,59 +5,1230 @@ ;; name in dgo: eye ;; dgos: GAME, ENGINE +;; DECOMP BEGINS -(define - *eye-work* - (new 'static 'eye-work - :sprite-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) +(define *eye-work* (new 'static 'eye-work + :sprite-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) + ) + :sprite-tmpl2 + (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 #x50ab400000008001 #x53531) + ) + :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) + ) + :blink-table + (new 'static 'array float 10 0.0 0.667 0.9 1.0 1.0 1.0 1.0 0.333 0.1 0.0) + ) + ) + +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +(defun render-eyes ((arg0 dma-buffer) (arg1 eye-control) (arg2 int)) + (local-vars (sv-16 float)) + (let ((s4-0 32) + (s3-0 (+ (* arg2 32) 32)) + (s2-0 (* arg2 32)) + ) + (let ((f28-0 (* 16.0 (+ (the float (+ s4-0 16)) (* 32.0 (-> arg1 left x))))) + (f26-0 (* 16.0 (+ (the float (+ s3-0 16)) (* 32.0 (-> arg1 left y))))) + (f30-0 (* 16.0 (+ (the float (+ s4-0 48)) (* 32.0 (-> arg1 right x))))) + ) + (set! sv-16 (* 16.0 (+ (the float (+ s3-0 16)) (* 32.0 (-> arg1 right y))))) + (let ((s1-0 (-> arg1 shaders 0))) + (let ((v1-6 (the-as object (-> arg0 base)))) + (set! (-> (the-as dma-gif-packet v1-6) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) + (set! (-> (the-as dma-gif-packet v1-6) quad 1) (-> *eye-work* adgif-tmpl quad 1)) + (let ((s0-0 (the-as (pointer uint64) (&+ (the-as pointer v1-6) 32)))) + (quad-copy! s0-0 (the-as pointer s1-0) 5) + (set! (-> s0-0 6) (the-as uint #x7c0007c005)) + (set! (-> s0-0 8) (the-as uint 68)) + (set! (-> s0-0 9) (the-as uint 66)) + ) + ) + (&+! (-> arg0 base) 112) + (let* ((v1-12 arg0) + (a0-6 (the-as object (-> v1-12 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-12 base) (&+ (the-as pointer a0-6) 16)) + ) + (let* ((v1-13 arg0) + (a0-8 (the-as object (-> v1-13 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) + (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-13 base) (&+ (the-as pointer a0-8) 16)) + ) + (let* ((v1-14 arg0) + (a0-10 (-> v1-14 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-14 base) (&+ a0-10 16)) + ) + (let ((v1-15 (the-as (inline-array vector4w) (-> arg0 base)))) + (set! (-> v1-15 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) + (set! (-> v1-15 1 quad) (-> *eye-work* sprite-tmpl quad 1)) + (set-vector! (-> v1-15 2) 128 128 128 128) + (set-vector! (-> v1-15 3) 0 0 0 0) + (set-vector! (-> v1-15 4) (* s4-0 16) (* s3-0 16) #xffffff 0) + (set-vector! (-> v1-15 5) 0 0 0 0) + (set-vector! (-> v1-15 6) (* (+ s4-0 64) 16) (* (+ s3-0 32) 16) #xffffff 0) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let ((v1-20 (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) + (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! (-> 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)) + ) + (let* ((f0-6 (* 256.0 (-> arg1 left iris-scale))) + (a1-25 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-13 (the int (- f28-0 f0-6))) + (t0-5 (the int (- f26-0 f0-6))) + (a3-9 (the int (+ f28-0 f0-6))) + (t1-0 (the int (+ f26-0 f0-6))) + ) + (set! (-> a1-25 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) + (set! (-> a1-25 1 quad) (-> *eye-work* sprite-tmpl quad 1)) + (set-vector! (-> a1-25 2) 128 128 128 128) + (set-vector! (-> a1-25 3) 0 0 0 0) + (set-vector! (-> a1-25 4) a2-13 t0-5 #xffffff 0) + (set-vector! (-> a1-25 5) v1-20 a0-30 0 0) + (set-vector! (-> a1-25 6) a3-9 t1-0 #xffffff 0) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((a1-29 arg0) + (a2-17 (the-as object (-> a1-29 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-29 base) (&+ (the-as pointer a2-17) 16)) + ) + (let* ((a1-30 arg0) + (a2-19 (the-as object (-> a1-30 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) + (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! (-> a1-30 base) (&+ (the-as pointer a2-19) 16)) + ) + (let* ((a1-31 arg0) + (a2-21 (-> a1-31 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-31 base) (&+ a2-21 16)) + ) + (let* ((f0-10 (* 256.0 (-> arg1 right iris-scale))) + (a1-32 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-23 (the int (- f30-0 f0-10))) + (t0-11 (the int (- sv-16 f0-10))) + (a3-20 (the int (+ f30-0 f0-10))) + (t1-2 (the int (+ sv-16 f0-10))) + ) + (set! (-> a1-32 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) + (set! (-> a1-32 1 quad) (-> *eye-work* sprite-tmpl quad 1)) + (set-vector! (-> a1-32 2) 128 128 128 128) + (set-vector! (-> a1-32 3) 0 0 0 0) + (set-vector! (-> a1-32 4) a2-23 t0-11 #xffffff 0) + (set-vector! (-> a1-32 5) v1-20 a0-30 0 0) + (set-vector! (-> a1-32 6) a3-20 t1-2 #xffffff 0) + ) + ) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((v1-24 arg0) + (a0-32 (the-as object (-> v1-24 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-24 base) (&+ (the-as pointer a0-32) 16)) + ) + (let* ((v1-25 arg0) + (a0-34 (the-as object (-> v1-25 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) + (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-25 base) (&+ (the-as pointer a0-34) 16)) + ) + (let* ((v1-26 arg0) + (a0-36 (-> v1-26 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-26 base) (&+ a0-36 16)) + ) + (let ((s1-1 (-> arg1 shaders 1))) + (let ((v1-28 (the-as object (-> arg0 base)))) + (set! (-> (the-as (inline-array vector4w) v1-28) 0 quad) (-> *eye-work* adgif-tmpl dma-vif quad)) + (set! (-> (the-as (inline-array vector4w) v1-28) 1 quad) (-> *eye-work* adgif-tmpl quad 1)) + (let ((s0-1 (the-as (pointer uint64) (&+ (the-as pointer v1-28) 32)))) + (quad-copy! s0-1 (the-as pointer s1-1) 5) + (set! (-> s0-1 6) (the-as uint #x7c0007c005)) + (set! (-> s0-1 8) (the-as uint 68)) + (set! (-> s0-1 9) (the-as uint 66)) + ) + ) + (&+! (-> arg0 base) 112) + (let ((v1-35 (ash 16 (-> s1-1 tex0 tw))) + (a0-48 (ash 16 (-> s1-1 tex0 th))) + ) + (let* ((a1-45 arg0) + (a2-27 (the-as object (-> a1-45 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-45 base) (&+ (the-as pointer a2-27) 16)) + ) + (let* ((a1-46 arg0) + (a2-29 (the-as object (-> a1-46 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) + (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! (-> a1-46 base) (&+ (the-as pointer a2-29) 16)) + ) + (let* ((a1-47 arg0) + (a2-31 (-> a1-47 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-47 base) (&+ a2-31 16)) + ) + (let* ((f0-14 (* 256.0 (-> arg1 left pupil-scale))) + (a1-48 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-33 (the int (- f28-0 f0-14))) + (t0-17 (the int (- f26-0 f0-14))) + (a3-30 (the int (+ f28-0 f0-14))) + (t1-3 (the int (+ f26-0 f0-14))) + ) + (set! (-> a1-48 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-48 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-48 2) 128 128 128 128) + (set-vector! (-> a1-48 3) 0 0 0 0) + (set-vector! (-> a1-48 4) a2-33 t0-17 #xffffff 0) + (set-vector! (-> a1-48 5) v1-35 a0-48 0 0) + (let ((a1-49 (the-as (inline-array vector4w) (-> a1-48 6)))) + (set! (-> a1-49 0 x) a3-30) + (set! (-> a1-49 0 y) t1-3) + (set! (-> a1-49 0 z) #xffffff) + (set! (-> a1-49 0 w) 0) + ) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((a1-52 arg0) + (a2-37 (the-as object (-> a1-52 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-52 base) (&+ (the-as pointer a2-37) 16)) + ) + (let* ((a1-53 arg0) + (a2-39 (the-as object (-> a1-53 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) + (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! (-> a1-53 base) (&+ (the-as pointer a2-39) 16)) + ) + (let* ((a1-54 arg0) + (a2-41 (-> a1-54 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-54 base) (&+ a2-41 16)) + ) + (let* ((f0-18 (* 256.0 (-> arg1 right pupil-scale))) + (a1-55 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-43 (the int (- f30-0 f0-18))) + (t0-23 (the int (- sv-16 f0-18))) + (a3-41 (the int (+ f30-0 f0-18))) + (t1-5 (the int (+ sv-16 f0-18))) + ) + (set! (-> a1-55 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-55 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-55 2) 128 128 128 128) + (set-vector! (-> a1-55 3) 0 0 0 0) + (set-vector! (-> a1-55 4) a2-43 t0-23 #xffffff 0) + (set-vector! (-> a1-55 5) v1-35 a0-48 0 0) + (set-vector! (-> a1-55 6) a3-41 t1-5 #xffffff 0) + ) + ) + ) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((v1-39 arg0) + (a0-50 (the-as object (-> v1-39 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-39 base) (&+ (the-as pointer a0-50) 16)) + ) + (let* ((v1-40 arg0) + (a0-52 (the-as object (-> v1-40 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) (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-40 base) (&+ (the-as pointer a0-52) 16)) + ) + (let* ((v1-41 arg0) + (a0-54 (-> v1-41 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-41 base) (&+ a0-54 16)) + ) + (let ((s1-2 (-> arg1 shaders 2))) + (let ((v1-43 (the-as object (-> arg0 base)))) + (set! (-> (the-as dma-gif-packet v1-43) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) + (set! (-> (the-as dma-gif-packet v1-43) quad 1) (-> *eye-work* adgif-tmpl quad 1)) + (let ((s0-2 (the-as (pointer uint64) (&+ (the-as pointer v1-43) 32)))) + (quad-copy! s0-2 (the-as pointer s1-2) 5) + (set! (-> s0-2 6) (the-as uint #x7c0007c005)) + (set! (-> s0-2 8) (the-as uint 1)) + (set! (-> s0-2 9) (the-as uint 66)) + ) + ) + (set! (-> arg0 base) (-> (the-as (inline-array dma-gif-packet) (-> arg0 base)) 3 gif)) + (let ((v1-50 (ash 16 (-> s1-2 tex0 tw))) + (a0-66 (ash 16 (-> s1-2 tex0 th))) + ) + (when (< (-> arg1 left lid) 0.0) + (let ((f0-23 (+ 1.0 (-> arg1 left lid)))) + (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) + ) + ) + (let* ((a1-70 arg0) + (a2-47 (the-as object (-> a1-70 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-70 base) (&+ (the-as pointer a2-47) 16)) + ) + (let* ((a1-71 arg0) + (a2-49 (the-as object (-> a1-71 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) + (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! (-> a1-71 base) (&+ (the-as pointer a2-49) 16)) + ) + (let* ((a1-72 arg0) + (a2-51 (-> a1-72 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-72 base) (&+ a2-51 16)) + ) + (let* ((f0-27 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 left lid)))) + (a1-74 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-53 (* s4-0 16)) + (t0-29 (the int (* 16.0 f0-27))) + (a3-52 (* (+ s4-0 32) 16)) + (t1-6 (the int (* 16.0 (+ f0-27 (* 32.0 (-> arg1 left lid-scale)))))) + ) + (set! (-> a1-74 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-74 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-74 2) 128 128 128 0) + (set-vector! (-> a1-74 3) 0 0 0 0) + (set-vector! (-> a1-74 4) a2-53 t0-29 #xffffff 0) + (set-vector! (-> a1-74 5) v1-50 a0-66 0 0) + (set-vector! (-> a1-74 6) a3-52 t1-6 #xffffff 0) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (when (< (-> arg1 right lid) 0.0) + (let ((f0-33 (+ 1.0 (-> arg1 right lid)))) + (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) + ) + ) + (let* ((a1-80 arg0) + (a2-57 (the-as object (-> a1-80 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-80 base) (&+ (the-as pointer a2-57) 16)) + ) + (let* ((a1-81 arg0) + (a2-59 (the-as object (-> a1-81 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) (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! (-> a1-81 base) (&+ (the-as pointer a2-59) 16)) + ) + (let* ((a1-82 arg0) + (a2-61 (-> a1-82 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-82 base) (&+ a2-61 16)) + ) + (let* ((f0-37 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 right lid)))) + (a1-84 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-64 (* (+ s4-0 64) 16)) + (t0-35 (the int (* 16.0 f0-37))) + (a3-63 (* (+ s4-0 32) 16)) + (t1-7 (the int (* 16.0 (+ f0-37 (* 32.0 (-> arg1 left lid-scale)))))) + ) + (set! (-> a1-84 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-84 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-84 2) 128 128 128 0) + (set-vector! (-> a1-84 3) 0 0 0 0) + (set-vector! (-> a1-84 4) a2-64 t0-35 #xffffff 0) + (set-vector! (-> a1-84 5) v1-50 a0-66 0 0) + (set-vector! (-> a1-84 6) a3-63 t1-7 #xffffff 0) + ) + ) + ) ) - :sprite-tmpl2 - (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 #x50ab400000008001 #x53531) + (let ((v0-3 (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (set! (-> arg0 base) (the-as pointer v0-3)) + (the-as pointer v0-3) ) - :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) - ) - :blink-table - (new 'static 'array float 10 0.0 0.667 0.9 1.0 1.0 1.0 1.0 0.333 0.1 0.0) - ) ) +(defun update-eyes () + (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-0 (-> s5-0 base)) + ) + (set-display-gs-state-offset s5-0 *eyes-base-page* 64 352 0 0 32 32) + (let* ((v1-3 s5-0) + (a0-4 (the-as object (-> v1-3 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-3 base) (&+ (the-as pointer a0-4) 16)) + ) + (let* ((v1-4 s5-0) + (a0-6 (the-as object (-> v1-4 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) (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-4 base) (&+ (the-as pointer a0-6) 16)) + ) + (let* ((v1-5 s5-0) + (a0-8 (-> v1-5 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! (-> v1-5 base) (&+ a0-8 16)) + ) + (let ((a3-1 (-> s5-0 base))) + (let ((v1-6 (the-as object (-> s5-0 base)))) + (set! (-> (the-as dma-packet v1-6) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-6) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-6) vif1) (new 'static 'vif-tag)) + (set! (-> s5-0 base) (&+ (the-as pointer v1-6) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex0) + gp-0 + (the-as (pointer dma-tag) a3-1) + ) + ) + ) + (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-1 (-> s5-1 base)) + ) + (set-display-gs-state-offset s5-1 *eyes-base-page* 64 352 0 0 32 32) + (let* ((v1-15 s5-1) + (a0-19 (the-as object (-> v1-15 base))) + ) + (set! (-> (the-as dma-packet a0-19) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-19) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-19) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-15 base) (&+ (the-as pointer a0-19) 16)) + ) + (let* ((v1-16 s5-1) + (a0-21 (the-as object (-> v1-16 base))) + ) + (set! (-> (the-as gs-gif-tag a0-21) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-21) 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-16 base) (&+ (the-as pointer a0-21) 16)) + ) + (let* ((v1-17 s5-1) + (a0-23 (-> v1-17 base)) + ) + (set! (-> (the-as (pointer gs-test) a0-23) 0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-23) 1) (gs-reg64 test-1)) + (set! (-> v1-17 base) (&+ a0-23 16)) + ) + (let ((a3-3 (-> s5-1 base))) + (let ((v1-18 (the-as object (-> s5-1 base)))) + (set! (-> (the-as dma-packet v1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-18) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-18) vif1) (new 'static 'vif-tag)) + (set! (-> s5-1 base) (&+ (the-as pointer v1-18) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex1) + gp-1 + (the-as (pointer dma-tag) a3-3) + ) + ) + ) + (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-2 (-> s5-2 base)) + ) + (set-display-gs-state-offset s5-2 *eyes-base-page* 64 352 0 0 32 32) + (let* ((v1-27 s5-2) + (a0-34 (the-as object (-> v1-27 base))) + ) + (set! (-> (the-as dma-packet a0-34) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-34) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-34) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-27 base) (&+ (the-as pointer a0-34) 16)) + ) + (let* ((v1-28 s5-2) + (a0-36 (the-as object (-> v1-28 base))) + ) + (set! (-> (the-as gs-gif-tag a0-36) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-36) 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-28 base) (&+ (the-as pointer a0-36) 16)) + ) + (let* ((v1-29 s5-2) + (a0-38 (-> v1-29 base)) + ) + (set! (-> (the-as (pointer gs-test) a0-38) 0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-38) 1) (gs-reg64 test-1)) + (set! (-> v1-29 base) (&+ a0-38 16)) + ) + (let ((a3-5 (-> s5-2 base))) + (let ((v1-30 (the-as object (-> s5-2 base)))) + (set! (-> (the-as dma-packet v1-30) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-30) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-30) vif1) (new 'static 'vif-tag)) + (set! (-> s5-2 base) (&+ (the-as pointer v1-30) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id bucket-54) + gp-2 + (the-as (pointer dma-tag) a3-5) + ) + ) + ) + (dotimes (gp-3 11) + (let* ((s5-3 (-> *eye-control-array* data gp-3)) + (v1-40 (handle->process (-> s5-3 process))) + ) + (when (and v1-40 + (logtest? (-> (the-as process-drawable v1-40) skel status) 256) + (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status drwf03)) + ) + (when (-> s5-3 shaders) + (when (not (paused?)) + (cond + ((and (>= (-> s5-3 left lid) 0.0) (>= (-> s5-3 right lid) 0.0)) + (set! (-> s5-3 random-time) (the-as uint 60)) + (set! (-> s5-3 blink) 0.0) + ) + (else + (+! (-> s5-3 random-time) -1) + (let ((v1-54 (-> s5-3 random-time))) + (when (< v1-54 (the-as uint 10)) + (set! (-> s5-3 blink) (-> *eye-work* blink-table v1-54)) + (if (zero? v1-54) + (set! (-> s5-3 random-time) (the-as uint (the int (rand-vu-float-range 60.0 240.0)))) + ) + ) + ) + ) + ) + ) + (cond + ((>= (the-as uint 1) (-> s5-3 level)) + (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s4-0 (-> s3-0 base)) + ) + (render-eyes s3-0 s5-3 gp-3) + (let ((a3-6 (-> s3-0 base))) + (let ((v1-59 (the-as object (-> s3-0 base)))) + (set! (-> (the-as dma-packet v1-59) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-59) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-59) vif1) (new 'static 'vif-tag)) + (set! (-> s3-0 base) (&+ (the-as pointer v1-59) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id (if (zero? (-> s5-3 level)) + 48 + 51 + ) + ) + s4-0 + (the-as (pointer dma-tag) a3-6) + ) + ) + ) + ) + (else + (let* ((s3-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s4-1 (-> s3-1 base)) + ) + (render-eyes s3-1 s5-3 gp-3) + (let ((a3-7 (-> s3-1 base))) + (let ((v1-69 (the-as object (-> s3-1 base)))) + (set! (-> (the-as dma-packet v1-69) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-69) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-69) vif1) (new 'static 'vif-tag)) + (set! (-> s3-1 base) (&+ (the-as pointer v1-69) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id bucket-54) + s4-1 + (the-as (pointer dma-tag) a3-7) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (let* ((s5-4 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-4 (-> s5-4 base)) + ) + (reset-display-gs-state *display* s5-4 *oddeven*) + (let* ((v1-80 s5-4) + (a0-85 (the-as object (-> v1-80 base))) + ) + (set! (-> (the-as dma-packet a0-85) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-85) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-85) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-80 base) (&+ (the-as pointer a0-85) 16)) + ) + (let* ((v1-81 s5-4) + (a0-87 (the-as object (-> v1-81 base))) + ) + (set! (-> (the-as gs-gif-tag a0-87) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-87) 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-81 base) (&+ (the-as pointer a0-87) 16)) + ) + (let* ((v1-82 s5-4) + (a0-89 (-> v1-82 base)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-89) 0) (gs-reg64 dimx)) + (set! (-> (the-as (pointer gs-reg64) a0-89) 1) (gs-reg64 alpha-1)) + (set! (-> v1-82 base) (&+ a0-89 16)) + ) + (let ((a3-8 (-> s5-4 base))) + (let ((v1-83 (the-as object (-> s5-4 base)))) + (set! (-> (the-as dma-packet v1-83) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-83) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-83) vif1) (new 'static 'vif-tag)) + (set! (-> s5-4 base) (&+ (the-as pointer v1-83) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex0) + gp-4 + (the-as (pointer dma-tag) a3-8) + ) + ) + ) + (let* ((s5-5 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-5 (-> s5-5 base)) + ) + (reset-display-gs-state *display* s5-5 *oddeven*) + (let* ((v1-92 s5-5) + (a0-100 (the-as object (-> v1-92 base))) + ) + (set! (-> (the-as dma-packet a0-100) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-100) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-100) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-92 base) (&+ (the-as pointer a0-100) 16)) + ) + (let* ((v1-93 s5-5) + (a0-102 (the-as object (-> v1-93 base))) + ) + (set! (-> (the-as gs-gif-tag a0-102) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-102) 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-93 base) (&+ (the-as pointer a0-102) 16)) + ) + (let* ((v1-94 s5-5) + (a0-104 (-> v1-94 base)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-104) 0) (gs-reg64 dimx)) + (set! (-> (the-as (pointer gs-reg64) a0-104) 1) (gs-reg64 alpha-1)) + (set! (-> v1-94 base) (&+ a0-104 16)) + ) + (let ((a3-9 (-> s5-5 base))) + (let ((v1-95 (the-as object (-> s5-5 base)))) + (set! (-> (the-as dma-packet v1-95) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-95) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-95) vif1) (new 'static 'vif-tag)) + (set! (-> s5-5 base) (&+ (the-as pointer v1-95) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex1) + gp-5 + (the-as (pointer dma-tag) a3-9) + ) + ) + ) + (let* ((s5-6 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-6 (-> s5-6 base)) + ) + (reset-display-gs-state *display* s5-6 *oddeven*) + (let* ((v1-104 s5-6) + (a0-115 (the-as object (-> v1-104 base))) + ) + (set! (-> (the-as dma-packet a0-115) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-115) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-115) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-104 base) (&+ (the-as pointer a0-115) 16)) + ) + (let* ((v1-105 s5-6) + (a0-117 (the-as object (-> v1-105 base))) + ) + (set! (-> (the-as gs-gif-tag a0-117) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-117) 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-105 base) (&+ (the-as pointer a0-117) 16)) + ) + (let* ((v1-106 s5-6) + (a0-119 (-> v1-106 base)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-119) 0) (gs-reg64 dimx)) + (set! (-> (the-as (pointer gs-reg64) a0-119) 1) (gs-reg64 alpha-1)) + (set! (-> v1-106 base) (&+ a0-119 16)) + ) + (let ((a3-10 (-> s5-6 base))) + (let ((v1-107 (the-as object (-> s5-6 base)))) + (set! (-> (the-as dma-packet v1-107) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-107) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-107) vif1) (new 'static 'vif-tag)) + (set! (-> s5-6 base) (&+ (the-as pointer v1-107) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id bucket-54) + gp-6 + (the-as (pointer dma-tag) a3-10) + ) + ) + ) + 0 + (none) + ) (defun get-eye-block ((arg0 int) (arg1 int)) (let ((v1-0 arg0) (a0-4 (-> ct32-24-block-table (* arg1 4))) ) - (+ *eyes-base-block* (* v1-0 32) a0-4) - ) + (+ *eyes-base-block* (* v1-0 32) a0-4) + ) ) -(defun merc-eye-anim ((arg0 process-drawable)) - (none)) \ No newline at end of file +(defun convert-eye-data ((arg0 box8s) (arg1 uint128)) + (local-vars + (r0-0 uint128) + (v0-0 float) + (v1-0 uint128) + (v1-1 uint128) + (v1-2 uint128) + (v1-3 uint128) + (v1-4 uint128) + (v1-5 uint128) + ) + (rlet ((vf1 :class vf) + (vf2 :class vf) + ) + (.pextlb v1-0 arg1 r0-0) + (.pextlh v1-1 v1-0 r0-0) + (.pw.sra v1-2 v1-1 16) + (.mov vf1 v1-2) + (.pextlb v1-3 r0-0 arg1) + (.pextuh v1-4 r0-0 v1-3) + (.pw.sll v1-5 v1-4 6) + (.mov vf2 v1-5) + (vitof15.xyzw vf1 vf1) + (vitof12.xyzw vf2 vf2) + (.svf (&-> arg0 min quad) vf1) + (.svf (&-> arg0 max quad) vf2) + (.mov v0-0 vf2) + v0-0 + ) + ) + +(defun merc-eye-anim ((arg0 manipy)) + (let* ((s5-0 (-> arg0 draw mgeo header eye-ctrl)) + (a0-1 (-> arg0 skel root-channel 0)) + (s4-0 (-> a0-1 frame-group)) + ) + (when (and (logtest? (-> arg0 skel status) 256) + (nonzero? s5-0) + (> (-> arg0 skel active-channels) 0) + s4-0 + (nonzero? (-> s4-0 _unknown)) + ) + (let* ((v1-15 (-> *eye-control-array* data (-> s5-0 eye-slot))) + (s3-1 (min (the int (-> a0-1 frame-num)) (-> s4-0 _unknown 0))) + (s2-1 (min (+ (the int (-> a0-1 frame-num)) 1) (-> s4-0 _unknown 0))) + (f0-4 (-> a0-1 frame-num)) + (f30-0 (- f0-4 (* (the float (the int (/ f0-4 1.0))) 1.0))) + ) + (set! (-> v1-15 process) (process->handle arg0)) + (set! (-> v1-15 shaders) (the-as (inline-array adgif-shader) (-> s5-0 iris-shader))) + (set! (-> v1-15 level) (the-as uint (-> (if (-> arg0 entity) + (-> arg0 entity extra level) + (-> *level* level-default) + ) + index + ) + ) + ) + (let ((s1-0 (new 'stack-no-clear 'box8s)) + (s0-0 (new 'stack-no-clear 'vector)) + ) + (cond + ((-> s4-0 _unknown) + (convert-eye-data + s1-0 + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s3-1 2) 8))) 1) + ) + ) + (convert-eye-data + (the-as box8s s0-0) + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s2-1 2) 8))) 1) + ) + ) + (vector4-lerp! + (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left)) (* 96 (-> s5-0 eye-slot)))) + (the-as vector (-> s1-0 data)) + (the-as vector (&-> s0-0 x)) + f30-0 + ) + (vector4-lerp! + (the-as vector (&+ (&-> *eye-control-array* data 0 left iris-scale) (* 96 (-> s5-0 eye-slot)))) + (-> s1-0 max) + (&+ s0-0 16) + f30-0 + ) + (convert-eye-data + s1-0 + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s3-1 2) 1) 8))) 1) + ) + ) + (convert-eye-data + (the-as box8s s0-0) + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s2-1 2) 1) 8))) 1) + ) + ) + (vector4-lerp! + (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right)) (* 96 (-> s5-0 eye-slot)))) + (the-as vector (-> s1-0 data)) + (the-as vector (&-> s0-0 x)) + f30-0 + ) + (vector4-lerp! + (the-as vector (&+ (&-> *eye-control-array* data 0 right iris-scale) (* 96 (-> s5-0 eye-slot)))) + (-> s1-0 max) + (&+ s0-0 16) + f30-0 + ) + ) + (else + (let ((v1-37 (-> *eye-control-array* data (-> s5-0 eye-slot)))) + (set! (-> v1-37 left x) 0.0) + (set! (-> v1-37 left y) 0.0) + (set! (-> v1-37 left lid) -1.0) + (set! (-> v1-37 left iris-scale) 1.0) + (set! (-> v1-37 left pupil-scale) 1.0) + (set! (-> v1-37 left lid-scale) 1.0) + (set! (-> v1-37 right x) 0.0) + (set! (-> v1-37 right y) 0.0) + (set! (-> v1-37 right lid) -1.0) + (set! (-> v1-37 right iris-scale) 1.0) + (set! (-> v1-37 right pupil-scale) 1.0) + (set! (-> v1-37 right lid-scale) 1.0) + ) + ) + ) + ) + ) + (logior! (-> arg0 skel status) 128) + ) + ) + (if (logtest? (-> arg0 skel status) 128) + (set! (-> arg0 skel status) (logand -129 (-> arg0 skel status))) + ) + 0 + (none) + ) + + + + diff --git a/test/decompiler/reference/engine/draw/process-drawable_REF.gc b/test/decompiler/reference/engine/draw/process-drawable_REF.gc index 96e6dc51d8..387b9c30e0 100644 --- a/test/decompiler/reference/engine/draw/process-drawable_REF.gc +++ b/test/decompiler/reference/engine/draw/process-drawable_REF.gc @@ -976,7 +976,7 @@ (merc-blend-shape obj) ) (if (logtest? (-> obj skel status) 384) - (merc-eye-anim obj) + (merc-eye-anim (the-as manipy obj)) ) (label cfg-27) (let ((a0-17 (-> gp-0 effect))) diff --git a/test/decompiler/reference/engine/game/generic-obs_REF.gc b/test/decompiler/reference/engine/game/generic-obs_REF.gc index 31edb3625f..eca7280a2b 100644 --- a/test/decompiler/reference/engine/game/generic-obs_REF.gc +++ b/test/decompiler/reference/engine/game/generic-obs_REF.gc @@ -61,7 +61,7 @@ (merc-blend-shape self) ) (if (logtest? (-> self skel status) 384) - (merc-eye-anim self) + (merc-eye-anim (the-as manipy self)) ) ) (else diff --git a/test/decompiler/reference/engine/gfx/eye-h_REF.gc b/test/decompiler/reference/engine/gfx/eye-h_REF.gc index 49beb2095d..605ee772e9 100644 --- a/test/decompiler/reference/engine/gfx/eye-h_REF.gc +++ b/test/decompiler/reference/engine/gfx/eye-h_REF.gc @@ -31,13 +31,13 @@ ;; definition of type eye-control (deftype eye-control (structure) - ((process uint64 :offset-assert 0) - (random-time uint16 :offset-assert 8) - (level uint16 :offset-assert 10) - (blink float :offset-assert 12) - (shaders uint32 :offset-assert 16) - (left eye :inline :offset-assert 32) - (right eye :inline :offset-assert 64) + ((process handle :offset-assert 0) + (random-time uint16 :offset-assert 8) + (level uint16 :offset-assert 10) + (blink float :offset-assert 12) + (shaders (inline-array adgif-shader) :offset-assert 16) + (left eye :inline :offset-assert 32) + (right eye :inline :offset-assert 64) ) :method-count-assert 9 :size-assert #x60 @@ -100,8 +100,8 @@ ;; failed to figure out what this is: (dotimes (v1-5 11) - (set! (-> *eye-control-array* data v1-5 process) (the-as uint #f)) - (set! (-> *eye-control-array* data v1-5 shaders) (the-as uint #f)) + (set! (-> *eye-control-array* data v1-5 process) (the-as handle #f)) + (set! (-> *eye-control-array* data v1-5 shaders) (the-as (inline-array adgif-shader) #f)) (set! (-> *eye-control-array* data v1-5 random-time) (the-as uint 60)) (set! (-> *eye-control-array* data v1-5 blink) 0.0) ) diff --git a/test/decompiler/reference/engine/gfx/eye_REF.gc b/test/decompiler/reference/engine/gfx/eye_REF.gc new file mode 100644 index 0000000000..4ff9a723db --- /dev/null +++ b/test/decompiler/reference/engine/gfx/eye_REF.gc @@ -0,0 +1,1233 @@ +;;-*-Lisp-*- +(in-package goal) + +;; definition for symbol *eye-work*, type eye-work +(define *eye-work* (new 'static 'eye-work + :sprite-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) + ) + :sprite-tmpl2 + (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 #x50ab400000008001 #x53531) + ) + :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) + ) + :blink-table + (new 'static 'array float 10 0.0 0.667 0.9 1.0 1.0 1.0 1.0 0.333 0.1 0.0) + ) + ) + +;; definition for function render-eyes +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; WARN: Stack slot offset 16 signed mismatch +;; INFO: Return type mismatch vector4w vs pointer. +;; Used lq/sq +(defun render-eyes ((arg0 dma-buffer) (arg1 eye-control) (arg2 int)) + (local-vars (sv-16 float)) + (let ((s4-0 32) + (s3-0 (+ (* arg2 32) 32)) + (s2-0 (* arg2 32)) + ) + (let ((f28-0 (* 16.0 (+ (the float (+ s4-0 16)) (* 32.0 (-> arg1 left x))))) + (f26-0 (* 16.0 (+ (the float (+ s3-0 16)) (* 32.0 (-> arg1 left y))))) + (f30-0 (* 16.0 (+ (the float (+ s4-0 48)) (* 32.0 (-> arg1 right x))))) + ) + (set! sv-16 (* 16.0 (+ (the float (+ s3-0 16)) (* 32.0 (-> arg1 right y))))) + (let ((s1-0 (-> arg1 shaders 0))) + (let ((v1-6 (the-as object (-> arg0 base)))) + (set! (-> (the-as dma-gif-packet v1-6) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) + (set! (-> (the-as dma-gif-packet v1-6) quad 1) (-> *eye-work* adgif-tmpl quad 1)) + (let ((s0-0 (the-as (pointer uint64) (&+ (the-as pointer v1-6) 32)))) + (quad-copy! s0-0 (the-as pointer s1-0) 5) + (set! (-> s0-0 6) (the-as uint #x7c0007c005)) + (set! (-> s0-0 8) (the-as uint 68)) + (set! (-> s0-0 9) (the-as uint 66)) + ) + ) + (&+! (-> arg0 base) 112) + (let* ((v1-12 arg0) + (a0-6 (the-as object (-> v1-12 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-12 base) (&+ (the-as pointer a0-6) 16)) + ) + (let* ((v1-13 arg0) + (a0-8 (the-as object (-> v1-13 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) + (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-13 base) (&+ (the-as pointer a0-8) 16)) + ) + (let* ((v1-14 arg0) + (a0-10 (-> v1-14 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-14 base) (&+ a0-10 16)) + ) + (let ((v1-15 (the-as (inline-array vector4w) (-> arg0 base)))) + (set! (-> v1-15 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) + (set! (-> v1-15 1 quad) (-> *eye-work* sprite-tmpl quad 1)) + (set-vector! (-> v1-15 2) 128 128 128 128) + (set-vector! (-> v1-15 3) 0 0 0 0) + (set-vector! (-> v1-15 4) (* s4-0 16) (* s3-0 16) #xffffff 0) + (set-vector! (-> v1-15 5) 0 0 0 0) + (set-vector! (-> v1-15 6) (* (+ s4-0 64) 16) (* (+ s3-0 32) 16) #xffffff 0) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let ((v1-20 (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) + (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! (-> 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)) + ) + (let* ((f0-6 (* 256.0 (-> arg1 left iris-scale))) + (a1-25 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-13 (the int (- f28-0 f0-6))) + (t0-5 (the int (- f26-0 f0-6))) + (a3-9 (the int (+ f28-0 f0-6))) + (t1-0 (the int (+ f26-0 f0-6))) + ) + (set! (-> a1-25 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) + (set! (-> a1-25 1 quad) (-> *eye-work* sprite-tmpl quad 1)) + (set-vector! (-> a1-25 2) 128 128 128 128) + (set-vector! (-> a1-25 3) 0 0 0 0) + (set-vector! (-> a1-25 4) a2-13 t0-5 #xffffff 0) + (set-vector! (-> a1-25 5) v1-20 a0-30 0 0) + (set-vector! (-> a1-25 6) a3-9 t1-0 #xffffff 0) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((a1-29 arg0) + (a2-17 (the-as object (-> a1-29 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-29 base) (&+ (the-as pointer a2-17) 16)) + ) + (let* ((a1-30 arg0) + (a2-19 (the-as object (-> a1-30 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) + (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! (-> a1-30 base) (&+ (the-as pointer a2-19) 16)) + ) + (let* ((a1-31 arg0) + (a2-21 (-> a1-31 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-31 base) (&+ a2-21 16)) + ) + (let* ((f0-10 (* 256.0 (-> arg1 right iris-scale))) + (a1-32 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-23 (the int (- f30-0 f0-10))) + (t0-11 (the int (- sv-16 f0-10))) + (a3-20 (the int (+ f30-0 f0-10))) + (t1-2 (the int (+ sv-16 f0-10))) + ) + (set! (-> a1-32 0 quad) (-> *eye-work* sprite-tmpl dma-vif quad)) + (set! (-> a1-32 1 quad) (-> *eye-work* sprite-tmpl quad 1)) + (set-vector! (-> a1-32 2) 128 128 128 128) + (set-vector! (-> a1-32 3) 0 0 0 0) + (set-vector! (-> a1-32 4) a2-23 t0-11 #xffffff 0) + (set-vector! (-> a1-32 5) v1-20 a0-30 0 0) + (set-vector! (-> a1-32 6) a3-20 t1-2 #xffffff 0) + ) + ) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((v1-24 arg0) + (a0-32 (the-as object (-> v1-24 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-24 base) (&+ (the-as pointer a0-32) 16)) + ) + (let* ((v1-25 arg0) + (a0-34 (the-as object (-> v1-25 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) + (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-25 base) (&+ (the-as pointer a0-34) 16)) + ) + (let* ((v1-26 arg0) + (a0-36 (-> v1-26 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-26 base) (&+ a0-36 16)) + ) + (let ((s1-1 (-> arg1 shaders 1))) + (let ((v1-28 (the-as object (-> arg0 base)))) + (set! (-> (the-as (inline-array vector4w) v1-28) 0 quad) (-> *eye-work* adgif-tmpl dma-vif quad)) + (set! (-> (the-as (inline-array vector4w) v1-28) 1 quad) (-> *eye-work* adgif-tmpl quad 1)) + (let ((s0-1 (the-as (pointer uint64) (&+ (the-as pointer v1-28) 32)))) + (quad-copy! s0-1 (the-as pointer s1-1) 5) + (set! (-> s0-1 6) (the-as uint #x7c0007c005)) + (set! (-> s0-1 8) (the-as uint 68)) + (set! (-> s0-1 9) (the-as uint 66)) + ) + ) + (&+! (-> arg0 base) 112) + (let ((v1-35 (ash 16 (-> s1-1 tex0 tw))) + (a0-48 (ash 16 (-> s1-1 tex0 th))) + ) + (let* ((a1-45 arg0) + (a2-27 (the-as object (-> a1-45 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-45 base) (&+ (the-as pointer a2-27) 16)) + ) + (let* ((a1-46 arg0) + (a2-29 (the-as object (-> a1-46 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) + (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! (-> a1-46 base) (&+ (the-as pointer a2-29) 16)) + ) + (let* ((a1-47 arg0) + (a2-31 (-> a1-47 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-47 base) (&+ a2-31 16)) + ) + (let* ((f0-14 (* 256.0 (-> arg1 left pupil-scale))) + (a1-48 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-33 (the int (- f28-0 f0-14))) + (t0-17 (the int (- f26-0 f0-14))) + (a3-30 (the int (+ f28-0 f0-14))) + (t1-3 (the int (+ f26-0 f0-14))) + ) + (set! (-> a1-48 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-48 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-48 2) 128 128 128 128) + (set-vector! (-> a1-48 3) 0 0 0 0) + (set-vector! (-> a1-48 4) a2-33 t0-17 #xffffff 0) + (set-vector! (-> a1-48 5) v1-35 a0-48 0 0) + (let ((a1-49 (the-as (inline-array vector4w) (-> a1-48 6)))) + (set! (-> a1-49 0 x) a3-30) + (set! (-> a1-49 0 y) t1-3) + (set! (-> a1-49 0 z) #xffffff) + (set! (-> a1-49 0 w) 0) + ) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((a1-52 arg0) + (a2-37 (the-as object (-> a1-52 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-52 base) (&+ (the-as pointer a2-37) 16)) + ) + (let* ((a1-53 arg0) + (a2-39 (the-as object (-> a1-53 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) + (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! (-> a1-53 base) (&+ (the-as pointer a2-39) 16)) + ) + (let* ((a1-54 arg0) + (a2-41 (-> a1-54 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-54 base) (&+ a2-41 16)) + ) + (let* ((f0-18 (* 256.0 (-> arg1 right pupil-scale))) + (a1-55 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-43 (the int (- f30-0 f0-18))) + (t0-23 (the int (- sv-16 f0-18))) + (a3-41 (the int (+ f30-0 f0-18))) + (t1-5 (the int (+ sv-16 f0-18))) + ) + (set! (-> a1-55 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-55 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-55 2) 128 128 128 128) + (set-vector! (-> a1-55 3) 0 0 0 0) + (set-vector! (-> a1-55 4) a2-43 t0-23 #xffffff 0) + (set-vector! (-> a1-55 5) v1-35 a0-48 0 0) + (set-vector! (-> a1-55 6) a3-41 t1-5 #xffffff 0) + ) + ) + ) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (let* ((v1-39 arg0) + (a0-50 (the-as object (-> v1-39 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-39 base) (&+ (the-as pointer a0-50) 16)) + ) + (let* ((v1-40 arg0) + (a0-52 (the-as object (-> v1-40 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) (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-40 base) (&+ (the-as pointer a0-52) 16)) + ) + (let* ((v1-41 arg0) + (a0-54 (-> v1-41 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-41 base) (&+ a0-54 16)) + ) + (let ((s1-2 (-> arg1 shaders 2))) + (let ((v1-43 (the-as object (-> arg0 base)))) + (set! (-> (the-as dma-gif-packet v1-43) dma-vif quad) (-> *eye-work* adgif-tmpl dma-vif quad)) + (set! (-> (the-as dma-gif-packet v1-43) quad 1) (-> *eye-work* adgif-tmpl quad 1)) + (let ((s0-2 (the-as (pointer uint64) (&+ (the-as pointer v1-43) 32)))) + (quad-copy! s0-2 (the-as pointer s1-2) 5) + (set! (-> s0-2 6) (the-as uint #x7c0007c005)) + (set! (-> s0-2 8) (the-as uint 1)) + (set! (-> s0-2 9) (the-as uint 66)) + ) + ) + (set! (-> arg0 base) (-> (the-as (inline-array dma-gif-packet) (-> arg0 base)) 3 gif)) + (let ((v1-50 (ash 16 (-> s1-2 tex0 tw))) + (a0-66 (ash 16 (-> s1-2 tex0 th))) + ) + (when (< (-> arg1 left lid) 0.0) + (let ((f0-23 (+ 1.0 (-> arg1 left lid)))) + (set! (-> arg1 left lid) (+ f0-23 (* (- 1.0 f0-23) (-> arg1 blink)))) + ) + ) + (let* ((a1-70 arg0) + (a2-47 (the-as object (-> a1-70 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-70 base) (&+ (the-as pointer a2-47) 16)) + ) + (let* ((a1-71 arg0) + (a2-49 (the-as object (-> a1-71 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) + (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! (-> a1-71 base) (&+ (the-as pointer a2-49) 16)) + ) + (let* ((a1-72 arg0) + (a2-51 (-> a1-72 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-72 base) (&+ a2-51 16)) + ) + (let* ((f0-27 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 left lid)))) + (a1-74 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-53 (* s4-0 16)) + (t0-29 (the int (* 16.0 f0-27))) + (a3-52 (* (+ s4-0 32) 16)) + (t1-6 (the int (* 16.0 (+ f0-27 (* 32.0 (-> arg1 left lid-scale)))))) + ) + (set! (-> a1-74 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-74 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-74 2) 128 128 128 0) + (set-vector! (-> a1-74 3) 0 0 0 0) + (set-vector! (-> a1-74 4) a2-53 t0-29 #xffffff 0) + (set-vector! (-> a1-74 5) v1-50 a0-66 0 0) + (set-vector! (-> a1-74 6) a3-52 t1-6 #xffffff 0) + ) + (set! (-> arg0 base) (the-as pointer (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (when (< (-> arg1 right lid) 0.0) + (let ((f0-33 (+ 1.0 (-> arg1 right lid)))) + (set! (-> arg1 right lid) (+ f0-33 (* (- 1.0 f0-33) (-> arg1 blink)))) + ) + ) + (let* ((a1-80 arg0) + (a2-57 (the-as object (-> a1-80 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-80 base) (&+ (the-as pointer a2-57) 16)) + ) + (let* ((a1-81 arg0) + (a2-59 (the-as object (-> a1-81 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) (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! (-> a1-81 base) (&+ (the-as pointer a2-59) 16)) + ) + (let* ((a1-82 arg0) + (a2-61 (-> a1-82 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-82 base) (&+ a2-61 16)) + ) + (let* ((f0-37 (+ (the float (+ s3-0 -32)) (* 32.0 (-> arg1 right lid)))) + (a1-84 (the-as (inline-array vector4w) (-> arg0 base))) + (a2-64 (* (+ s4-0 64) 16)) + (t0-35 (the int (* 16.0 f0-37))) + (a3-63 (* (+ s4-0 32) 16)) + (t1-7 (the int (* 16.0 (+ f0-37 (* 32.0 (-> arg1 left lid-scale)))))) + ) + (set! (-> a1-84 0 quad) (-> *eye-work* sprite-tmpl2 dma-vif quad)) + (set! (-> a1-84 1 quad) (-> *eye-work* sprite-tmpl2 quad 1)) + (set-vector! (-> a1-84 2) 128 128 128 0) + (set-vector! (-> a1-84 3) 0 0 0 0) + (set-vector! (-> a1-84 4) a2-64 t0-35 #xffffff 0) + (set-vector! (-> a1-84 5) v1-50 a0-66 0 0) + (set-vector! (-> a1-84 6) a3-63 t1-7 #xffffff 0) + ) + ) + ) + ) + (let ((v0-3 (-> (the-as (inline-array vector4w) (-> arg0 base)) 7))) + (set! (-> arg0 base) (the-as pointer v0-3)) + (the-as pointer v0-3) + ) + ) + +;; definition for function update-eyes +;; INFO: Return type mismatch int vs none. +(defun update-eyes () + (let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-0 (-> s5-0 base)) + ) + (set-display-gs-state-offset s5-0 *eyes-base-page* 64 352 0 0 32 32) + (let* ((v1-3 s5-0) + (a0-4 (the-as object (-> v1-3 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-3 base) (&+ (the-as pointer a0-4) 16)) + ) + (let* ((v1-4 s5-0) + (a0-6 (the-as object (-> v1-4 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) (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-4 base) (&+ (the-as pointer a0-6) 16)) + ) + (let* ((v1-5 s5-0) + (a0-8 (-> v1-5 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! (-> v1-5 base) (&+ a0-8 16)) + ) + (let ((a3-1 (-> s5-0 base))) + (let ((v1-6 (the-as object (-> s5-0 base)))) + (set! (-> (the-as dma-packet v1-6) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-6) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-6) vif1) (new 'static 'vif-tag)) + (set! (-> s5-0 base) (&+ (the-as pointer v1-6) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex0) + gp-0 + (the-as (pointer dma-tag) a3-1) + ) + ) + ) + (let* ((s5-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-1 (-> s5-1 base)) + ) + (set-display-gs-state-offset s5-1 *eyes-base-page* 64 352 0 0 32 32) + (let* ((v1-15 s5-1) + (a0-19 (the-as object (-> v1-15 base))) + ) + (set! (-> (the-as dma-packet a0-19) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-19) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-19) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-15 base) (&+ (the-as pointer a0-19) 16)) + ) + (let* ((v1-16 s5-1) + (a0-21 (the-as object (-> v1-16 base))) + ) + (set! (-> (the-as gs-gif-tag a0-21) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-21) 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-16 base) (&+ (the-as pointer a0-21) 16)) + ) + (let* ((v1-17 s5-1) + (a0-23 (-> v1-17 base)) + ) + (set! (-> (the-as (pointer gs-test) a0-23) 0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-23) 1) (gs-reg64 test-1)) + (set! (-> v1-17 base) (&+ a0-23 16)) + ) + (let ((a3-3 (-> s5-1 base))) + (let ((v1-18 (the-as object (-> s5-1 base)))) + (set! (-> (the-as dma-packet v1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-18) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-18) vif1) (new 'static 'vif-tag)) + (set! (-> s5-1 base) (&+ (the-as pointer v1-18) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex1) + gp-1 + (the-as (pointer dma-tag) a3-3) + ) + ) + ) + (let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-2 (-> s5-2 base)) + ) + (set-display-gs-state-offset s5-2 *eyes-base-page* 64 352 0 0 32 32) + (let* ((v1-27 s5-2) + (a0-34 (the-as object (-> v1-27 base))) + ) + (set! (-> (the-as dma-packet a0-34) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-34) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-34) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-27 base) (&+ (the-as pointer a0-34) 16)) + ) + (let* ((v1-28 s5-2) + (a0-36 (the-as object (-> v1-28 base))) + ) + (set! (-> (the-as gs-gif-tag a0-36) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-36) 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-28 base) (&+ (the-as pointer a0-36) 16)) + ) + (let* ((v1-29 s5-2) + (a0-38 (-> v1-29 base)) + ) + (set! (-> (the-as (pointer gs-test) a0-38) 0) + (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-38) 1) (gs-reg64 test-1)) + (set! (-> v1-29 base) (&+ a0-38 16)) + ) + (let ((a3-5 (-> s5-2 base))) + (let ((v1-30 (the-as object (-> s5-2 base)))) + (set! (-> (the-as dma-packet v1-30) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-30) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-30) vif1) (new 'static 'vif-tag)) + (set! (-> s5-2 base) (&+ (the-as pointer v1-30) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id bucket-54) + gp-2 + (the-as (pointer dma-tag) a3-5) + ) + ) + ) + (dotimes (gp-3 11) + (let* ((s5-3 (-> *eye-control-array* data gp-3)) + (v1-40 (handle->process (-> s5-3 process))) + ) + (when (and v1-40 + (logtest? (-> (the-as process-drawable v1-40) skel status) 256) + (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status drwf03)) + ) + (when (-> s5-3 shaders) + (when (not (paused?)) + (cond + ((and (>= (-> s5-3 left lid) 0.0) (>= (-> s5-3 right lid) 0.0)) + (set! (-> s5-3 random-time) (the-as uint 60)) + (set! (-> s5-3 blink) 0.0) + ) + (else + (+! (-> s5-3 random-time) -1) + (let ((v1-54 (-> s5-3 random-time))) + (when (< v1-54 (the-as uint 10)) + (set! (-> s5-3 blink) (-> *eye-work* blink-table v1-54)) + (if (zero? v1-54) + (set! (-> s5-3 random-time) (the-as uint (the int (rand-vu-float-range 60.0 240.0)))) + ) + ) + ) + ) + ) + ) + (cond + ((>= (the-as uint 1) (-> s5-3 level)) + (let* ((s3-0 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s4-0 (-> s3-0 base)) + ) + (render-eyes s3-0 s5-3 gp-3) + (let ((a3-6 (-> s3-0 base))) + (let ((v1-59 (the-as object (-> s3-0 base)))) + (set! (-> (the-as dma-packet v1-59) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-59) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-59) vif1) (new 'static 'vif-tag)) + (set! (-> s3-0 base) (&+ (the-as pointer v1-59) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (the-as bucket-id (if (zero? (-> s5-3 level)) + 48 + 51 + ) + ) + s4-0 + (the-as (pointer dma-tag) a3-6) + ) + ) + ) + ) + (else + (let* ((s3-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (s4-1 (-> s3-1 base)) + ) + (render-eyes s3-1 s5-3 gp-3) + (let ((a3-7 (-> s3-1 base))) + (let ((v1-69 (the-as object (-> s3-1 base)))) + (set! (-> (the-as dma-packet v1-69) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-69) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-69) vif1) (new 'static 'vif-tag)) + (set! (-> s3-1 base) (&+ (the-as pointer v1-69) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id bucket-54) + s4-1 + (the-as (pointer dma-tag) a3-7) + ) + ) + ) + ) + ) + ) + ) + ) + ) + (let* ((s5-4 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-4 (-> s5-4 base)) + ) + (reset-display-gs-state *display* s5-4 *oddeven*) + (let* ((v1-80 s5-4) + (a0-85 (the-as object (-> v1-80 base))) + ) + (set! (-> (the-as dma-packet a0-85) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-85) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-85) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-80 base) (&+ (the-as pointer a0-85) 16)) + ) + (let* ((v1-81 s5-4) + (a0-87 (the-as object (-> v1-81 base))) + ) + (set! (-> (the-as gs-gif-tag a0-87) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-87) 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-81 base) (&+ (the-as pointer a0-87) 16)) + ) + (let* ((v1-82 s5-4) + (a0-89 (-> v1-82 base)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-89) 0) (gs-reg64 dimx)) + (set! (-> (the-as (pointer gs-reg64) a0-89) 1) (gs-reg64 alpha-1)) + (set! (-> v1-82 base) (&+ a0-89 16)) + ) + (let ((a3-8 (-> s5-4 base))) + (let ((v1-83 (the-as object (-> s5-4 base)))) + (set! (-> (the-as dma-packet v1-83) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-83) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-83) vif1) (new 'static 'vif-tag)) + (set! (-> s5-4 base) (&+ (the-as pointer v1-83) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex0) + gp-4 + (the-as (pointer dma-tag) a3-8) + ) + ) + ) + (let* ((s5-5 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-5 (-> s5-5 base)) + ) + (reset-display-gs-state *display* s5-5 *oddeven*) + (let* ((v1-92 s5-5) + (a0-100 (the-as object (-> v1-92 base))) + ) + (set! (-> (the-as dma-packet a0-100) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-100) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-100) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-92 base) (&+ (the-as pointer a0-100) 16)) + ) + (let* ((v1-93 s5-5) + (a0-102 (the-as object (-> v1-93 base))) + ) + (set! (-> (the-as gs-gif-tag a0-102) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-102) 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-93 base) (&+ (the-as pointer a0-102) 16)) + ) + (let* ((v1-94 s5-5) + (a0-104 (-> v1-94 base)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-104) 0) (gs-reg64 dimx)) + (set! (-> (the-as (pointer gs-reg64) a0-104) 1) (gs-reg64 alpha-1)) + (set! (-> v1-94 base) (&+ a0-104 16)) + ) + (let ((a3-9 (-> s5-5 base))) + (let ((v1-95 (the-as object (-> s5-5 base)))) + (set! (-> (the-as dma-packet v1-95) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-95) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-95) vif1) (new 'static 'vif-tag)) + (set! (-> s5-5 base) (&+ (the-as pointer v1-95) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id pris-tex1) + gp-5 + (the-as (pointer dma-tag) a3-9) + ) + ) + ) + (let* ((s5-6 (-> *display* frames (-> *display* on-screen) frame global-buf)) + (gp-6 (-> s5-6 base)) + ) + (reset-display-gs-state *display* s5-6 *oddeven*) + (let* ((v1-104 s5-6) + (a0-115 (the-as object (-> v1-104 base))) + ) + (set! (-> (the-as dma-packet a0-115) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a0-115) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-115) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1)) + (set! (-> v1-104 base) (&+ (the-as pointer a0-115) 16)) + ) + (let* ((v1-105 s5-6) + (a0-117 (the-as object (-> v1-105 base))) + ) + (set! (-> (the-as gs-gif-tag a0-117) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1)) + (set! (-> (the-as gs-gif-tag a0-117) 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-105 base) (&+ (the-as pointer a0-117) 16)) + ) + (let* ((v1-106 s5-6) + (a0-119 (-> v1-106 base)) + ) + (set! (-> (the-as (pointer gs-reg64) a0-119) 0) (gs-reg64 dimx)) + (set! (-> (the-as (pointer gs-reg64) a0-119) 1) (gs-reg64 alpha-1)) + (set! (-> v1-106 base) (&+ a0-119 16)) + ) + (let ((a3-10 (-> s5-6 base))) + (let ((v1-107 (the-as object (-> s5-6 base)))) + (set! (-> (the-as dma-packet v1-107) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet v1-107) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet v1-107) vif1) (new 'static 'vif-tag)) + (set! (-> s5-6 base) (&+ (the-as pointer v1-107) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id bucket-54) + gp-6 + (the-as (pointer dma-tag) a3-10) + ) + ) + ) + 0 + (none) + ) + +;; definition for function get-eye-block +(defun get-eye-block ((arg0 int) (arg1 int)) + (let ((v1-0 arg0) + (a0-4 (-> ct32-24-block-table (* arg1 4))) + ) + (+ *eyes-base-block* (* v1-0 32) a0-4) + ) + ) + +;; definition for function convert-eye-data +(defun convert-eye-data ((arg0 box8s) (arg1 uint128)) + (local-vars + (v0-0 float) + (v1-0 uint128) + (v1-1 uint128) + (v1-2 uint128) + (v1-3 uint128) + (v1-4 uint128) + (v1-5 uint128) + ) + (rlet ((vf1 :class vf) + (vf2 :class vf) + ) + (.pextlb v1-0 arg1 0) + (.pextlh v1-1 v1-0 0) + (.pw.sra v1-2 v1-1 16) + (.mov vf1 v1-2) + (.pextlb v1-3 0 arg1) + (.pextuh v1-4 0 v1-3) + (.pw.sll v1-5 v1-4 6) + (.mov vf2 v1-5) + (vitof15.xyzw vf1 vf1) + (vitof12.xyzw vf2 vf2) + (.svf (&-> arg0 min quad) vf1) + (.svf (&-> arg0 max quad) vf2) + (.mov v0-0 vf2) + v0-0 + ) + ) + +;; definition for function merc-eye-anim +;; INFO: Return type mismatch int vs none. +(defun merc-eye-anim ((arg0 manipy)) + (let* ((s5-0 (-> arg0 draw mgeo header eye-ctrl)) + (a0-1 (-> arg0 skel root-channel 0)) + (s4-0 (-> a0-1 frame-group)) + ) + (when (and (logtest? (-> arg0 skel status) 256) + (nonzero? s5-0) + (> (-> arg0 skel active-channels) 0) + s4-0 + (nonzero? (-> s4-0 _unknown)) + ) + (let* ((v1-15 (-> *eye-control-array* data (-> s5-0 eye-slot))) + (s3-1 (min (the int (-> a0-1 frame-num)) (-> s4-0 _unknown 0))) + (s2-1 (min (+ (the int (-> a0-1 frame-num)) 1) (-> s4-0 _unknown 0))) + (f0-4 (-> a0-1 frame-num)) + (f30-0 (- f0-4 (* (the float (the int (/ f0-4 1.0))) 1.0))) + ) + (set! (-> v1-15 process) (process->handle arg0)) + (set! (-> v1-15 shaders) (the-as (inline-array adgif-shader) (-> s5-0 iris-shader))) + (set! (-> v1-15 level) (the-as uint (-> (if (-> arg0 entity) + (-> arg0 entity extra level) + (-> *level* level-default) + ) + index + ) + ) + ) + (let ((s1-0 (new 'stack-no-clear 'box8s)) + (s0-0 (new 'stack-no-clear 'vector)) + ) + (cond + ((-> s4-0 _unknown) + (convert-eye-data + s1-0 + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s3-1 2) 8))) 1) + ) + ) + (convert-eye-data + (the-as box8s s0-0) + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s2-1 2) 8))) 1) + ) + ) + (vector4-lerp! + (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left)) (* 96 (-> s5-0 eye-slot)))) + (the-as vector (-> s1-0 data)) + (the-as vector (&-> s0-0 x)) + f30-0 + ) + (vector4-lerp! + (the-as vector (&+ (&-> *eye-control-array* data 0 left iris-scale) (* 96 (-> s5-0 eye-slot)))) + (-> s1-0 max) + (&+ s0-0 16) + f30-0 + ) + (convert-eye-data + s1-0 + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s3-1 2) 1) 8))) 1) + ) + ) + (convert-eye-data + (the-as box8s s0-0) + (the-as + uint128 + (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s2-1 2) 1) 8))) 1) + ) + ) + (vector4-lerp! + (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right)) (* 96 (-> s5-0 eye-slot)))) + (the-as vector (-> s1-0 data)) + (the-as vector (&-> s0-0 x)) + f30-0 + ) + (vector4-lerp! + (the-as vector (&+ (&-> *eye-control-array* data 0 right iris-scale) (* 96 (-> s5-0 eye-slot)))) + (-> s1-0 max) + (&+ s0-0 16) + f30-0 + ) + ) + (else + (let ((v1-37 (-> *eye-control-array* data (-> s5-0 eye-slot)))) + (set! (-> v1-37 left x) 0.0) + (set! (-> v1-37 left y) 0.0) + (set! (-> v1-37 left lid) -1.0) + (set! (-> v1-37 left iris-scale) 1.0) + (set! (-> v1-37 left pupil-scale) 1.0) + (set! (-> v1-37 left lid-scale) 1.0) + (set! (-> v1-37 right x) 0.0) + (set! (-> v1-37 right y) 0.0) + (set! (-> v1-37 right lid) -1.0) + (set! (-> v1-37 right iris-scale) 1.0) + (set! (-> v1-37 right pupil-scale) 1.0) + (set! (-> v1-37 right lid-scale) 1.0) + ) + ) + ) + ) + ) + (logior! (-> arg0 skel status) 128) + ) + ) + (if (logtest? (-> arg0 skel status) 128) + (set! (-> arg0 skel status) (logand -129 (-> arg0 skel status))) + ) + 0 + (none) + ) diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc deleted file mode 100644 index 653b9e0050..0000000000 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle-h_REF.gc +++ /dev/null @@ -1,149 +0,0 @@ -;;-*-Lisp-*- -(in-package goal) - -;; definition for symbol *sp-frame-time*, type vector -(define *sp-frame-time* (new 'global 'vector)) - -;; failed to figure out what this is: -(set-vector! *sp-frame-time* 0.00000000000000000000000000000000000001175495 5.0 1.0 1.0) - -;; definition for symbol *sp-60-hz*, type symbol -(define *sp-60-hz* #t) - -;; definition of type sparticle-cpuinfo -(deftype sparticle-cpuinfo (structure) - ((sprite sprite-vec-data-2d :offset-assert 0) - (adgif adgif-shader :offset-assert 4) - (radius float :offset-assert 8) - (omega float :offset-assert 12) - (vel-sxvel vector :inline :offset-assert 16) - (rot-syvel vector :inline :offset-assert 32) - (fade rgbaf :inline :offset-assert 48) - (acc vector :inline :offset-assert 64) - (rotvel3d quaternion :inline :offset-assert 80) - (vel vector3s :inline :offset 16) - (accel vector3s :inline :offset 64) - (scalevelx float :offset 28) - (scalevely float :offset 44) - (friction float :offset-assert 96) - (timer int32 :offset-assert 100) - (flags sp-cpuinfo-flag :offset-assert 104) - (user-int32 int32 :offset-assert 108) - (user-uint32 uint32 :offset 108) - (user-float float :offset 108) - (user-pntr uint32 :offset 108) - (user-sprite sprite-vec-data-2d :offset 108) - (func basic :offset-assert 112) - (next-time uint32 :offset-assert 116) - (next-launcher basic :offset-assert 120) - (cache-alpha float :offset-assert 124) - (valid symbol :offset-assert 128) - (key sparticle-launch-control :offset-assert 132) - (binding sparticle-launch-state :offset-assert 136) - (data uint32 1 :offset 12) - (dataf float 1 :offset 12) - (datac uint8 1 :offset 12) - ) - :method-count-assert 9 - :size-assert #x8c - :flag-assert #x90000008c - ) - -;; definition for method 3 of type sparticle-cpuinfo -(defmethod inspect sparticle-cpuinfo ((obj sparticle-cpuinfo)) - (format #t "[~8x] ~A~%" obj 'sparticle-cpuinfo) - (format #t "~Tsprite: #~%" (-> obj sprite)) - (format #t "~Tadgif: #~%" (-> obj adgif)) - (format #t "~Tradius: ~f~%" (-> obj radius)) - (format #t "~Tomega: ~f~%" (-> obj omega)) - (format #t "~Tvel-sxvel: #~%" (-> obj vel-sxvel)) - (format #t "~Trot-syvel: #~%" (-> obj rot-syvel)) - (format #t "~Tfade: #~%" (-> obj fade)) - (format #t "~Tacc: #~%" (-> obj acc)) - (format #t "~Trotvel3d: #~%" (-> obj rotvel3d)) - (format #t "~Tvel: #~%" (-> obj vel-sxvel)) - (format #t "~Taccel: #~%" (-> obj acc)) - (format #t "~Tscalevelx: ~f~%" (-> obj vel-sxvel w)) - (format #t "~Tscalevely: ~f~%" (-> obj rot-syvel w)) - (format #t "~Tfriction: ~f~%" (-> obj friction)) - (format #t "~Ttimer: ~D~%" (-> obj timer)) - (format #t "~Tflags: ~D~%" (-> obj flags)) - (format #t "~Tuser-int32: ~D~%" (-> obj user-float)) - (format #t "~Tuser-uint32: ~D~%" (-> obj user-float)) - (format #t "~Tuser-float: ~f~%" (the-as float (-> obj user-float))) - (format #t "~Tuser-pntr: #x~X~%" (-> obj user-float)) - (format #t "~Tuser-sprite: #~%" (-> obj user-float)) - (format #t "~Tfunc: ~A~%" (-> obj func)) - (format #t "~Tnext-time: ~D~%" (-> obj next-time)) - (format #t "~Tnext-launcher: ~A~%" (-> obj next-launcher)) - (format #t "~Tcache-alpha: ~f~%" (-> obj cache-alpha)) - (format #t "~Tvalid: ~A~%" (-> obj valid)) - (format #t "~Tkey: ~A~%" (-> obj key)) - (format #t "~Tbinding: #~%" (-> obj binding)) - (format #t "~Tdata[1] @ #x~X~%" (&-> obj omega)) - (format #t "~Tdataf[1] @ #x~X~%" (&-> obj omega)) - (format #t "~Tdatac[1] @ #x~X~%" (&-> obj omega)) - obj - ) - -;; definition of type sparticle-launchinfo -(deftype sparticle-launchinfo (structure) - ((launchrot vector :inline :offset-assert 0) - (conerot vector :inline :offset-assert 16) - (coneradius float :offset-assert 32) - (rotate-y float :offset-assert 36) - (data uint8 1 :offset 0) - ) - :method-count-assert 9 - :size-assert #x28 - :flag-assert #x900000028 - ) - -;; definition for method 3 of type sparticle-launchinfo -(defmethod inspect sparticle-launchinfo ((obj sparticle-launchinfo)) - (format #t "[~8x] ~A~%" obj 'sparticle-launchinfo) - (format #t "~Tlaunchrot: #~%" (-> obj launchrot)) - (format #t "~Tconerot: #~%" (-> obj conerot)) - (format #t "~Tconeradius: ~f~%" (-> obj coneradius)) - (format #t "~Trotate-y: ~f~%" (-> obj rotate-y)) - (format #t "~Tdata[1] @ #x~X~%" (-> obj launchrot)) - obj - ) - -;; definition of type sparticle-system -(deftype sparticle-system (basic) - ((blocks int32 2 :offset-assert 4) - (length int32 2 :offset-assert 12) - (num-alloc int32 2 :offset-assert 20) - (is-3d basic :offset-assert 28) - (flags uint32 :offset-assert 32) - (alloc-table (pointer uint64) :offset-assert 36) - (cpuinfo-table (inline-array sparticle-cpuinfo) :offset-assert 40) - (vecdata-table pointer :offset-assert 44) - (adgifdata-table (inline-array adgif-shader) :offset-assert 48) - ) - :method-count-assert 9 - :size-assert #x34 - :flag-assert #x900000034 - (:methods - (new (symbol type int int symbol pointer (inline-array adgif-shader)) _type_ 0) - ) - ) - -;; definition for method 3 of type sparticle-system -(defmethod inspect sparticle-system ((obj sparticle-system)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tblocks[2] @ #x~X~%" (-> obj blocks)) - (format #t "~Tlength[2] @ #x~X~%" (-> obj length)) - (format #t "~Tnum-alloc[2] @ #x~X~%" (-> obj num-alloc)) - (format #t "~Tis-3d: ~A~%" (-> obj is-3d)) - (format #t "~Tflags: ~D~%" (-> obj flags)) - (format #t "~Talloc-table: #x~X~%" (-> obj alloc-table)) - (format #t "~Tcpuinfo-table: #x~X~%" (-> obj cpuinfo-table)) - (format #t "~Tvecdata-table: #x~X~%" (-> obj vecdata-table)) - (format #t "~Tadgifdata-table: #x~X~%" (-> obj adgifdata-table)) - obj - ) - -;; failed to figure out what this is: -0 diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc deleted file mode 100644 index 562fec8e98..0000000000 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher-h_REF.gc +++ /dev/null @@ -1,215 +0,0 @@ -;;-*-Lisp-*- -(in-package goal) - -;; definition of type sp-field-init-spec -(deftype sp-field-init-spec (structure) - ((field sp-field-id :offset-assert 0) - (flags sp-flag :offset-assert 2) - (initial-valuef float :offset-assert 4) - (random-rangef float :offset-assert 8) - (random-multf float :offset-assert 12) - (initial-value int32 :offset 4) - (random-range int32 :offset 8) - (random-mult int32 :offset 12) - (sym symbol :offset 4) - (func symbol :offset 4) - (tex uint32 :offset 4) - (pntr pointer :offset 4) - (sound sound-spec :offset 4) - ) - :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 - ) - -;; definition for method 3 of type sp-field-init-spec -(defmethod inspect sp-field-init-spec ((obj sp-field-init-spec)) - (format #t "[~8x] ~A~%" obj 'sp-field-init-spec) - (format #t "~Tfield: ~D~%" (-> obj field)) - (format #t "~Tflags: ~D~%" (-> obj flags)) - (format #t "~Tinitial-valuef: ~f~%" (-> obj initial-valuef)) - (format #t "~Trandom-rangef: ~f~%" (-> obj random-rangef)) - (format #t "~Trandom-multf: ~f~%" (-> obj random-multf)) - (format #t "~Tinitial-value: ~D~%" (-> obj initial-valuef)) - (format #t "~Trandom-range: ~D~%" (-> obj random-rangef)) - (format #t "~Trandom-mult: ~D~%" (-> obj random-multf)) - (format #t "~Tfunc: ~A~%" (-> obj initial-valuef)) - (format #t "~Ttex: ~D~%" (-> obj initial-valuef)) - (format #t "~Tpntr: #x~X~%" (-> obj initial-valuef)) - (format #t "~Tsym: ~A~%" (-> obj initial-valuef)) - (format #t "~Tsound: ~A~%" (-> obj initial-valuef)) - obj - ) - -;; definition of type sparticle-launcher -(deftype sparticle-launcher (basic) - ((birthaccum float :offset-assert 4) - (soundaccum float :offset-assert 8) - (init-specs (inline-array sp-field-init-spec) :offset-assert 12) - ) - :method-count-assert 9 - :size-assert #x10 - :flag-assert #x900000010 - ) - -;; definition for method 3 of type sparticle-launcher -;; INFO: this function exists in multiple non-identical object files -(defmethod inspect sparticle-launcher ((obj sparticle-launcher)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tbirthaccum: ~f~%" (-> obj birthaccum)) - (format #t "~Tsoundaccum: ~f~%" (-> obj soundaccum)) - (format #t "~Tinit-specs: #x~X~%" (-> obj init-specs)) - obj - ) - -;; definition of type sparticle-group-item -(deftype sparticle-group-item (structure) - ((launcher uint32 :offset-assert 0) - (fade-after meters :offset-assert 4) - (falloff-to meters :offset-assert 8) - (flags sp-group-item-flag :offset-assert 12) - (period uint16 :offset-assert 14) - (length uint16 :offset-assert 16) - (offset uint16 :offset-assert 18) - (hour-mask uint32 :offset-assert 20) - (binding uint32 :offset-assert 24) - ) - :method-count-assert 9 - :size-assert #x1c - :flag-assert #x90000001c - ) - -;; definition for method 3 of type sparticle-group-item -(defmethod inspect sparticle-group-item ((obj sparticle-group-item)) - (format #t "[~8x] ~A~%" obj 'sparticle-group-item) - (format #t "~Tlauncher: ~D~%" (-> obj launcher)) - (format #t "~Tfade-after: (meters ~m)~%" (-> obj fade-after)) - (format #t "~Tfalloff-to: (meters ~m)~%" (-> obj falloff-to)) - (format #t "~Tflags: ~D~%" (-> obj flags)) - (format #t "~Tperiod: ~D~%" (-> obj period)) - (format #t "~Tlength: ~D~%" (-> obj length)) - (format #t "~Toffset: ~D~%" (-> obj offset)) - (format #t "~Thour-mask: ~D~%" (-> obj hour-mask)) - (format #t "~Tbinding: ~D~%" (-> obj binding)) - obj - ) - -;; definition of type sparticle-launch-state -(deftype sparticle-launch-state (structure) - ((group-item sparticle-group-item :offset-assert 0) - (flags sp-launch-state-flags :offset-assert 4) - (randomize uint16 :offset-assert 6) - (origin vector :offset-assert 8) - (sprite3d sprite-vec-data-3d :offset-assert 12) - (sprite sparticle-cpuinfo :offset-assert 16) - (offset uint32 :offset-assert 20) - (accum float :offset-assert 24) - (spawn-time uint32 :offset-assert 28) - (swarm basic :offset 20) - (seed uint32 :offset 24) - (time uint32 :offset 28) - (spec basic :offset 16) - (id uint32 :offset 12) - ) - :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 - ) - -;; definition for method 3 of type sparticle-launch-state -(defmethod inspect sparticle-launch-state ((obj sparticle-launch-state)) - (format #t "[~8x] ~A~%" obj 'sparticle-launch-state) - (format #t "~Tgroup-item: #~%" (-> obj group-item)) - (format #t "~Tflags: ~D~%" (-> obj flags)) - (format #t "~Trandomize: ~D~%" (-> obj randomize)) - (format #t "~Torigin: #~%" (-> obj origin)) - (format #t "~Tsprite3d: #~%" (-> obj sprite3d)) - (format #t "~Tsprite: ~A~%" (-> obj sprite)) - (format #t "~Toffset: ~D~%" (-> obj offset)) - (format #t "~Taccum: ~f~%" (-> obj accum)) - (format #t "~Tspawn-time: ~D~%" (-> obj spawn-time)) - (format #t "~Tswarm: ~A~%" (-> obj offset)) - (format #t "~Tseed: ~D~%" (-> obj accum)) - (format #t "~Ttime: ~D~%" (-> obj spawn-time)) - (format #t "~Tspec: ~A~%" (-> obj sprite)) - (format #t "~Tid: ~D~%" (-> obj sprite3d)) - obj - ) - -;; definition of type sparticle-launch-group -(deftype sparticle-launch-group (basic) - ((length int16 :offset-assert 4) - (duration uint16 :offset-assert 6) - (linger-duration uint16 :offset-assert 8) - (flags sp-group-flag :offset-assert 10) - (name string :offset-assert 12) - (launcher (inline-array sparticle-group-item) :offset-assert 16) - (bounds sphere :inline :offset-assert 32) - ) - :method-count-assert 10 - :size-assert #x30 - :flag-assert #xa00000030 - (:methods - (create-launch-control (_type_ process) sparticle-launch-control 9) - ) - ) - -;; definition for method 3 of type sparticle-launch-group -(defmethod inspect sparticle-launch-group ((obj sparticle-launch-group)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tlength: ~D~%" (-> obj length)) - (format #t "~Tduration: ~D~%" (-> obj duration)) - (format #t "~Tlinger-duration: ~D~%" (-> obj linger-duration)) - (format #t "~Tflags: ~D~%" (-> obj flags)) - (format #t "~Tname: ~A~%" (-> obj name)) - (format #t "~Tlauncher: #x~X~%" (-> obj launcher)) - (format #t "~Tbounds: #~%" (-> obj bounds)) - obj - ) - -;; definition of type sparticle-launch-control -(deftype sparticle-launch-control (inline-array-class) - ((group sparticle-launch-group :offset-assert 16) - (proc process :offset-assert 20) - (local-clock int32 :offset-assert 24) - (fade float :offset-assert 28) - (matrix int32 :offset-assert 32) - (last-spawn-frame int32 :offset-assert 36) - (last-spawn-time int32 :offset-assert 40) - (center vector :inline :offset-assert 48) - (data sparticle-launch-state :inline :dynamic :offset-assert 64) - ) - :method-count-assert 14 - :size-assert #x40 - :flag-assert #xe00000040 - (:methods - (initialize (_type_ sparticle-launch-group process) none 9) - (is-visible? (_type_ vector) symbol 10) - (spawn (_type_ vector) object 11) - (kill-and-free-particles (_type_) none 12) - (kill-particles (_type_) none 13) - ) - ) - -;; definition for method 3 of type sparticle-launch-control -(defmethod inspect sparticle-launch-control ((obj sparticle-launch-control)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tlength: ~D~%" (-> obj length)) - (format #t "~Tallocated-length: ~D~%" (-> obj allocated-length)) - (format #t "~Tgroup: ~A~%" (-> obj group)) - (format #t "~Tproc: ~A~%" (-> obj proc)) - (format #t "~Tlocal-clock: ~D~%" (-> obj local-clock)) - (format #t "~Tfade: ~f~%" (-> obj fade)) - (format #t "~Tmatrix: ~D~%" (-> obj matrix)) - (format #t "~Tlast-spawn-frame: ~D~%" (-> obj last-spawn-frame)) - (format #t "~Tlast-spawn-time: ~D~%" (-> obj last-spawn-time)) - (format #t "~Tcenter: ~`vector`P~%" (-> obj center)) - (format #t "~Tdata[0] @ #x~X~%" (-> obj data)) - obj - ) - -;; failed to figure out what this is: -(set! (-> sparticle-launch-control heap-base) (the-as uint 32)) - -;; failed to figure out what this is: -0 diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher_REF.gc deleted file mode 100644 index e04750fba6..0000000000 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle-launcher_REF.gc +++ /dev/null @@ -1,1359 +0,0 @@ -;;-*-Lisp-*- -(in-package goal) - -;; definition for symbol *particle-300hz-timer*, type int -(define *particle-300hz-timer* 0) - -;; definition of type sparticle-birthinfo -(deftype sparticle-birthinfo (structure) - ((sprite uint32 :offset-assert 0) - (anim int32 :offset-assert 4) - (anim-speed float :offset-assert 8) - (birth-func basic :offset-assert 12) - (joint-ppoint int32 :offset-assert 16) - (num-to-birth float :offset-assert 20) - (sound basic :offset-assert 24) - (dataf float 1 :offset 0) - (data uint32 1 :offset 0) - ) - :method-count-assert 9 - :size-assert #x1c - :flag-assert #x90000001c - ) - -;; definition for method 3 of type sparticle-birthinfo -(defmethod inspect sparticle-birthinfo ((obj sparticle-birthinfo)) - (format #t "[~8x] ~A~%" obj 'sparticle-birthinfo) - (format #t "~Tsprite: ~D~%" (-> obj sprite)) - (format #t "~Tanim: ~D~%" (-> obj anim)) - (format #t "~Tanim-speed: ~f~%" (-> obj anim-speed)) - (format #t "~Tbirth-func: ~A~%" (-> obj birth-func)) - (format #t "~Tjoint-ppoint: ~D~%" (-> obj joint-ppoint)) - (format #t "~Tnum-to-birth: ~f~%" (-> obj num-to-birth)) - (format #t "~Tsound: ~A~%" (-> obj sound)) - (format #t "~Tdataf[1] @ #x~X~%" (&-> obj sprite)) - (format #t "~Tdata[1] @ #x~X~%" (&-> obj sprite)) - obj - ) - -;; definition for method 3 of type sparticle-launcher -;; INFO: this function exists in multiple non-identical object files -;; INFO: Return type mismatch int vs sparticle-launcher. -(defmethod inspect sparticle-launcher ((obj sparticle-launcher)) - (format #t "~X: sparticle-launcher~%" obj) - (let ((s5-0 0)) - (while (!= (-> obj init-specs s5-0 field) (sp-field-id spt-end)) - (let* ((v1-1 (-> obj init-specs s5-0)) - (t9-1 format) - (a0-3 #t) - (a1-1 "~T~S : ~F / #x~X / ~D~%") - (a2-1 (-> v1-1 field)) - ) - (t9-1 - a0-3 - a1-1 - (cond - ((= a2-1 (sp-field-id spt-end)) - "spt-end" - ) - ((= a2-1 (sp-field-id spt-scalevel)) - "spt-scalevel" - ) - ((= a2-1 (sp-field-id spt-scale)) - "spt-scale" - ) - ((= a2-1 (sp-field-id launch-fields-end)) - "launch-fields-end" - ) - ((= a2-1 (sp-field-id spt-rotate-y)) - "spt-rotate-y" - ) - ((= a2-1 (sp-field-id spt-conerot-radius)) - "spt-conerot-radius" - ) - ((= a2-1 (sp-field-id spt-conerot-w)) - "spt-conerot-w" - ) - ((= a2-1 (sp-field-id spt-conerot-z)) - "spt-conerot-z" - ) - ((= a2-1 (sp-field-id spt-conerot-y)) - "spt-conerot-y" - ) - ((= a2-1 (sp-field-id spt-conerot-x)) - "spt-conerot-x" - ) - ((= a2-1 (sp-field-id spt-launchrot-w)) - "spt-launchrot-w" - ) - ((= a2-1 (sp-field-id spt-launchrot-z)) - "spt-launchrot-z" - ) - ((= a2-1 (sp-field-id spt-launchrot-y)) - "spt-launchrot-y" - ) - ((= a2-1 (sp-field-id spt-launchrot-x)) - "spt-launchrot-x" - ) - ((= a2-1 (sp-field-id launch-fields-start)) - "launch-fields-start" - ) - ((= a2-1 (sp-field-id cpu-fields-end)) - "cpu-fields-end" - ) - ((= a2-1 (sp-field-id spt-next-launcher)) - "spt-next-launcher" - ) - ((= a2-1 (sp-field-id spt-next-time)) - "spt-next-time" - ) - ((= a2-1 (sp-field-id spt-func)) - "spt-func" - ) - ((= a2-1 (sp-field-id spt-userdata)) - "spt-userdata" - ) - ((= a2-1 (sp-field-id spt-flags)) - "spt-flags" - ) - ((= a2-1 (sp-field-id spt-timer)) - "spt-timer" - ) - ((= a2-1 (sp-field-id spt-friction)) - "spt-friction" - ) - ((= a2-1 (sp-field-id spt-quad-w)) - "spt-quad-w" - ) - ((= a2-1 (sp-field-id spt-quat-z)) - "spt-quat-z" - ) - ((= a2-1 (sp-field-id spt-quat-y)) - "spt-quat-y" - ) - ((= a2-1 (sp-field-id spt-quat-x)) - "spt-quat-x" - ) - ((= a2-1 (sp-field-id spt-dummy)) - "spt-dummy" - ) - ((= a2-1 (sp-field-id spt-accel-z)) - "spt-accel-z" - ) - ((= a2-1 (sp-field-id spt-accel-y)) - "spt-accel-y" - ) - ((= a2-1 (sp-field-id spt-accel-x)) - "spt-accel-x" - ) - ((= a2-1 (sp-field-id spt-fade-a)) - "spt-fade-a" - ) - ((= a2-1 (sp-field-id spt-fade-b)) - "spt-fade-b" - ) - ((= a2-1 (sp-field-id spt-fade-g)) - "spt-fade-g" - ) - ((= a2-1 (sp-field-id spt-fade-r)) - "spt-fade-r" - ) - ((= a2-1 (sp-field-id spt-scalevel-y)) - "spt-scalevel-y" - ) - ((= a2-1 (sp-field-id spt-rotvel-z)) - "spt-rotvel-z" - ) - ((= a2-1 (sp-field-id spt-rotvel-y)) - "spt-rotvel-y" - ) - ((= a2-1 (sp-field-id spt-rotvel-x)) - "spt-rotvel-x" - ) - ((= a2-1 (sp-field-id spt-scalevel-x)) - "spt-scalevel-x" - ) - ((= a2-1 (sp-field-id spt-vel-z)) - "spt-vel-z" - ) - ((= a2-1 (sp-field-id spt-vel-y)) - "spt-vel-y" - ) - ((= a2-1 (sp-field-id spt-vel-x)) - "spt-vel-x" - ) - ((= a2-1 (sp-field-id spt-omega)) - "spt-omega" - ) - ((= a2-1 (sp-field-id cpu-fields-start)) - "cpu-fields-start" - ) - ((= a2-1 (sp-field-id sprite-fields-end)) - "sprite-fields-end" - ) - ((= a2-1 (sp-field-id spt-a)) - "spt-a" - ) - ((= a2-1 (sp-field-id spt-b)) - "spt-b" - ) - ((= a2-1 (sp-field-id spt-g)) - "spt-g" - ) - ((= a2-1 (sp-field-id spt-r)) - "spt-r" - ) - ((= a2-1 (sp-field-id spt-scale-y)) - "spt-scale-y" - ) - ((= a2-1 (sp-field-id spt-rot-z)) - "spt-rot-z" - ) - ((= a2-1 (sp-field-id spt-rot-y)) - "spt-rot-y" - ) - ((= a2-1 (sp-field-id spt-rot-x)) - "spt-rot-x" - ) - ((= a2-1 (sp-field-id spt-scale-x)) - "spt-scale-x" - ) - ((= a2-1 (sp-field-id spt-z)) - "spt-z" - ) - ((= a2-1 (sp-field-id spt-y)) - "spt-y" - ) - ((= a2-1 (sp-field-id spt-x)) - "spt-x" - ) - ((= a2-1 (sp-field-id sprite-fields-start)) - "sprite-fields-start" - ) - ((= a2-1 (sp-field-id misc-fields-end)) - "misc-fields-end" - ) - ((= a2-1 (sp-field-id spt-sound)) - "spt-sound" - ) - ((= a2-1 (sp-field-id spt-num)) - "spt-num" - ) - ((= a2-1 (sp-field-id spt-joint/refpoint)) - "spt-joint/refpoint" - ) - ((= a2-1 (sp-field-id spt-birth-func)) - "spt-birth-func" - ) - ((= a2-1 (sp-field-id spt-anim-speed)) - "spt-anim-speed" - ) - ((= a2-1 (sp-field-id spt-anim)) - "spt-anim" - ) - ((= a2-1 (sp-field-id spt-texture)) - "spt-texture" - ) - ((= a2-1 (sp-field-id misc-fields-start)) - "misc-fields-start" - ) - (else - "*unknown*" - ) - ) - (-> v1-1 initial-valuef) - (-> v1-1 initial-valuef) - (-> v1-1 initial-valuef) - ) - ) - (+! s5-0 1) - ) - ) - (the-as sparticle-launcher 0) - ) - -;; definition for symbol *part-id-table*, type (array sparticle-launcher) -(define - *part-id-table* - (the-as (array sparticle-launcher) (new 'global 'boxed-array sparticle-launcher 3584)) - ) - -;; definition for symbol *part-group-id-table*, type (array sparticle-launch-group) -(define - *part-group-id-table* - (the-as (array sparticle-launch-group) (new 'global 'boxed-array sparticle-launch-group 1024)) - ) - -;; definition for function lookup-part-group-by-name -;; INFO: Return type mismatch sparticle-launch-group vs basic. -(defun lookup-part-group-by-name ((arg0 string)) - (let* ((s5-0 *part-group-id-table*) - (s4-0 (-> s5-0 length)) - ) - (dotimes (s3-0 s4-0) - (let ((s2-0 (-> s5-0 s3-0))) - (if (and (nonzero? s2-0) (string= arg0 (-> s2-0 name))) - (return (the-as basic s2-0)) - ) - ) - ) - ) - (the-as sparticle-launch-group #f) - ) - -;; definition for function lookup-part-group-pointer-by-name -(defun lookup-part-group-pointer-by-name ((arg0 string)) - (let* ((s4-0 *part-group-id-table*) - (s3-0 (-> s4-0 length)) - ) - (dotimes (gp-0 s3-0) - (let ((v1-2 (-> s4-0 gp-0))) - (if (and (nonzero? v1-2) (string= arg0 (-> v1-2 name))) - (return (&+ (-> s4-0 data) (* gp-0 4))) - ) - ) - ) - ) - (the-as (pointer sparticle-launch-group) #f) - ) - -;; definition for function part-group-pointer? -(defun part-group-pointer? ((arg0 pointer)) - (let ((v1-0 *part-group-id-table*)) - (and (>= (the-as int arg0) (the-as int (-> v1-0 data))) (< (the-as int arg0) (the-as int (&-> v1-0 1024)))) - ) - ) - -;; definition for function unlink-part-group-by-heap -(defun unlink-part-group-by-heap ((arg0 kheap)) - (let* ((v1-0 *part-group-id-table*) - (a2-0 (-> v1-0 length)) - (a1-0 (-> arg0 base)) - (a0-1 (-> arg0 top-base)) - ) - (while (nonzero? a2-0) - (+! a2-0 -1) - (let ((a3-2 (-> v1-0 a2-0))) - (when (and (>= (the-as int a3-2) (the-as int a1-0)) (< (the-as int a3-2) (the-as int a0-1))) - (set! (-> v1-0 a2-0) (the-as sparticle-launch-group 0)) - 0 - ) - ) - ) - ) - 0 - ) - -;; definition for function sp-init-fields! -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; definition of type sp-queued-launch-particles -(deftype sp-queued-launch-particles (structure) - ((sp-system sparticle-system :offset-assert 0) - (sp-launcher sparticle-launcher :offset-assert 4) - (pos vector :inline :offset-assert 16) - ) - :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 - ) - -;; definition for method 3 of type sp-queued-launch-particles -(defmethod inspect sp-queued-launch-particles ((obj sp-queued-launch-particles)) - (format #t "[~8x] ~A~%" obj 'sp-queued-launch-particles) - (format #t "~Tsp-system: ~A~%" (-> obj sp-system)) - (format #t "~Tsp-launcher: ~A~%" (-> obj sp-launcher)) - (format #t "~Tpos: #~%" (-> obj pos)) - obj - ) - -;; definition of type sp-launch-queue -(deftype sp-launch-queue (basic) - ((in-use int32 :offset-assert 4) - (queue sp-queued-launch-particles 32 :inline :offset-assert 16) - ) - :method-count-assert 9 - :size-assert #x410 - :flag-assert #x900000410 - ) - -;; definition for method 3 of type sp-launch-queue -(defmethod inspect sp-launch-queue ((obj sp-launch-queue)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tin-use: ~D~%" (-> obj in-use)) - (format #t "~Tqueue[32] @ #x~X~%" (-> obj queue)) - obj - ) - -;; definition for symbol *sp-launcher-lock*, type symbol -(define *sp-launcher-lock* #f) - -;; definition for symbol *sp-launch-queue*, type sp-launch-queue -(define *sp-launch-queue* (new 'global 'sp-launch-queue)) - -;; definition for symbol *sp-launcher-enable*, type symbol -(define *sp-launcher-enable* #t) - -;; definition for function particle-setup-adgif -;; INFO: Return type mismatch int vs none. -(defun particle-setup-adgif ((arg0 adgif-shader) (arg1 texture-id)) - (let ((a1-1 (lookup-texture-by-id arg1))) - (set! (-> arg0 tex1) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1)) - (set! (-> arg0 tex0 tfx) 0) - (if a1-1 - (adgif-shader<-texture! arg0 a1-1) - ) - ) - (set! (-> arg0 prims 1) (gs-reg64 tex0-1)) - (set! (-> arg0 prims 3) (gs-reg64 tex1-1)) - (set! (-> arg0 prims 5) (gs-reg64 miptbp1-1)) - (set! (-> arg0 clamp-reg) (gs-reg64 zbuf-1)) - (set! (-> arg0 prims 9) (gs-reg64 alpha-1)) - (set! (-> arg0 alpha) (new 'static 'gs-miptbp :tbp1 #x44)) - (set! (-> arg0 clamp) (new 'static 'gs-clamp :minu #x1c :minv #x101)) - 0 - (none) - ) - -;; definition of type particle-adgif-cache -(deftype particle-adgif-cache (basic) - ((used int32 :offset-assert 4) - (last uint16 :offset-assert 8) - (lastgif adgif-shader :offset-assert 12) - (tidhash uint16 80 :offset-assert 16) - (spadgif adgif-shader 80 :inline :offset-assert 176) - ) - :method-count-assert 9 - :size-assert #x19b0 - :flag-assert #x9000019b0 - ) - -;; definition for method 3 of type particle-adgif-cache -(defmethod inspect particle-adgif-cache ((obj particle-adgif-cache)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tused: ~D~%" (-> obj used)) - (format #t "~Tlast: ~D~%" (-> obj last)) - (format #t "~Tlastgif: #~%" (-> obj lastgif)) - (format #t "~Ttidhash[80] @ #x~X~%" (-> obj tidhash)) - (format #t "~Tspadgif[80] @ #x~X~%" (-> obj spadgif)) - obj - ) - -;; definition for symbol *particle-adgif-cache*, type particle-adgif-cache -(define *particle-adgif-cache* (new 'global 'particle-adgif-cache)) - -;; failed to figure out what this is: -(set! (-> *particle-adgif-cache* used) 0) - -;; definition for function particle-adgif -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; definition for function sp-queue-launch -;; Used lq/sq -(defun sp-queue-launch ((arg0 sparticle-system) (arg1 sparticle-launcher) (arg2 vector)) - (let ((v1-0 *sp-launch-queue*)) - (when (= (-> v1-0 in-use) 32) - (format 0 "ERROR: sp-launch-particles called during processing, and queue is full~%") - (return 0) - ) - (let ((a3-5 (-> v1-0 queue (-> v1-0 in-use)))) - (set! (-> a3-5 sp-system) arg0) - (set! (-> a3-5 sp-launcher) arg1) - (set! (-> a3-5 pos quad) (-> arg2 quad)) - ) - (let ((v0-1 (+ (-> v1-0 in-use) 1))) - (set! (-> v1-0 in-use) v0-1) - v0-1 - ) - ) - ) - -;; definition for function sp-adjust-launch -;; INFO: Return type mismatch int vs none. -(defun sp-adjust-launch ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 (inline-array sp-field-init-spec))) - (let ((s5-0 (new 'stack-no-clear 'sparticle-launchinfo))) - (let ((s2-0 (new 'stack-no-clear 'matrix)) - (s3-0 (new 'stack-no-clear 'vector)) - ) - (sp-init-fields! - (-> s5-0 launchrot) - arg2 - (sp-field-id launch-fields-start) - (sp-field-id launch-fields-end) - #t - ) - (matrix-rotate-xyz! s2-0 (-> s5-0 launchrot)) - (vector3s-matrix*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s2-0) - (matrix-rotate-xyz! s2-0 (-> s5-0 conerot)) - (vector3s-matrix*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s2-0) - (if (logtest? (sp-cpuinfo-flag launch-along-z) (-> arg1 flags)) - (set-vector! s3-0 0.0 0.0 (-> s5-0 coneradius) 1.0) - (set-vector! s3-0 0.0 (-> s5-0 coneradius) 0.0 1.0) - ) - (vector-matrix*! s3-0 s3-0 s2-0) - (+! (-> arg0 launchrot x) (-> s3-0 x)) - (+! (-> arg0 launchrot y) (-> s3-0 y)) - (+! (-> arg0 launchrot z) (-> s3-0 z)) - ) - (when (!= (-> s5-0 rotate-y) 0.0) - (let ((s3-1 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s3-1 (-> s5-0 rotate-y)) - (vector3s-rotate*! (the-as vector3s (-> arg0 launchrot)) (the-as vector3s (-> arg0 launchrot)) s3-1) - (vector3s-rotate*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s3-1) - (if (zero? (logand (sp-cpuinfo-flag use-global-acc) (-> arg1 flags))) - (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s3-1) - ) - ) - (if (logtest? (sp-cpuinfo-flag set-conerot) (-> arg1 flags)) - (set! (-> arg0 conerot y) (+ 16384.0 (-> s5-0 rotate-y))) - ) - ) - ) - 0 - (none) - ) - -;; definition for function sp-euler-convert -;; INFO: Return type mismatch int vs none. -(defun sp-euler-convert ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo)) - (local-vars (v1-1 float) (v1-2 float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((a1-1 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) - (set-vector! a1-1 (-> arg0 conerot x) (-> arg0 conerot y) (-> arg0 conerot z) 1.0) - (quaternion-zxy! s5-0 a1-1) - (cond - ((< (-> s5-0 w) 0.0) - (.lvf vf1 (&-> arg0 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg0 conerot quad) vf1) - (.mov v1-1 vf1) - ) - (else - (.lvf vf1 (&-> arg0 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg0 conerot quad) vf1) - (.mov v1-2 vf1) - ) - ) - ) - (cond - (*sp-60-hz* - (set! (-> arg1 rot-syvel x) (* 5.0 (-> arg1 rot-syvel x))) - (set! (-> arg1 rot-syvel y) (* 5.0 (-> arg1 rot-syvel y))) - (set! (-> arg1 rot-syvel z) (* 5.0 (-> arg1 rot-syvel z))) - ) - (else - (set! (-> arg1 rot-syvel x) (* 6.0 (-> arg1 rot-syvel x))) - (set! (-> arg1 rot-syvel y) (* 6.0 (-> arg1 rot-syvel y))) - (set! (-> arg1 rot-syvel z) (* 6.0 (-> arg1 rot-syvel z))) - ) - ) - (quaternion-zxy! (-> arg1 rotvel3d) (-> arg1 rot-syvel)) - 0 - (none) - ) - ) - -;; definition for function sp-rotate-system -;; INFO: Return type mismatch int vs none. -(defun sp-rotate-system ((arg0 sparticle-launchinfo) (arg1 sparticle-cpuinfo) (arg2 transformq)) - (let ((s5-0 (new 'stack-no-clear 'matrix))) - (let ((a1-1 (new 'stack-no-clear 'quaternion))) - (let* ((v1-0 a1-1) - (a0-1 arg2) - (f0-0 (-> a0-1 quat x)) - (f1-0 (-> a0-1 quat y)) - (f3-0 (-> a0-1 quat z)) - ) - (set! (-> v1-0 x) f0-0) - (set! (-> v1-0 y) f1-0) - (set! (-> v1-0 z) f3-0) - (set! (-> v1-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0)))) - ) - (quaternion->matrix s5-0 a1-1) - ) - (vector3s-rotate*! (the-as vector3s (-> arg0 launchrot)) (the-as vector3s (-> arg0 launchrot)) s5-0) - (vector3s-rotate*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s5-0) - (if (zero? (logand (sp-cpuinfo-flag use-global-acc) (-> arg1 flags))) - (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s5-0) - ) - ) - 0 - (none) - ) - -;; definition for function sp-launch-particles-var -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; definition for symbol *death-adgif*, type adgif-shader -(define *death-adgif* (the-as adgif-shader #f)) - -;; definition for function sp-launch-particles-death -;; INFO: Return type mismatch int vs none. -;; WARN: Expression building failed: Function sp-launch-particles-death has a return type of none, but the expression builder found a return statement. -;; Used lq/sq -(defun sp-launch-particles-death ((arg0 sparticle-system) (arg1 sparticle-launcher) (arg2 vector)) - (local-vars (v1-25 float) (v1-27 float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - (vf3 :class vf) - (vf30 :class vf) - (vf31 :class vf) - (vf4 :class vf) - (vf5 :class vf) - (vf6 :class vf) - ) - (init-vf0-vector) - (.lvf vf30 (&-> arg2 quad)) - (let ((v1-0 #x437f0000)) - (.mov vf31 v1-0) - ) - (let ((s5-0 (new 'stack-no-clear 'sprite-vec-data-2d)) - (gp-0 (sp-get-particle arg0 0 (the-as sparticle-launch-state #f))) - ) - (if (not gp-0) - (return 0) - ) - (let* ((a1-2 (-> arg1 init-specs 0)) - (a1-3 - (sp-init-fields! - (&-> s5-0 x) - (the-as (inline-array sp-field-init-spec) a1-2) - (sp-field-id sprite-fields-start) - (sp-field-id sprite-fields-end) - #t - ) - ) - ) - (sp-init-fields! - (&-> gp-0 omega) - (the-as (inline-array sp-field-init-spec) a1-3) - (sp-field-id cpu-fields-start) - (sp-field-id cpu-fields-end) - #t - ) - ) - (set! (-> s5-0 matrix) 0) - (set! (-> s5-0 rot) (the float (sar (shl (the int (-> s5-0 rot)) 48) 48))) - (.lvf vf4 (&-> s5-0 color quad)) - (.lvf vf5 (&-> s5-0 x-y-z-sx quad)) - (.min.x.vf vf4 vf4 vf31 :mask #b111) - (.add.vf vf5 vf5 vf30 :mask #b111) - (.svf (&-> s5-0 color quad) vf4) - (.svf (&-> s5-0 x-y-z-sx quad) vf5) - (when (not *death-adgif*) - (set! *death-adgif* (new 'static 'adgif-shader)) - (particle-adgif *death-adgif* (new 'static 'texture-id :index #x18 :page #x2)) - (set! (-> *death-adgif* alpha) (new 'static 'gs-miptbp :tbp1 #x48)) - ) - (let ((v1-14 (-> *death-adgif* quad 0 quad))) - (set! (-> gp-0 adgif quad 0 quad) v1-14) - ) - (let ((v1-16 (-> *death-adgif* quad 1 quad))) - (set! (-> gp-0 adgif quad 1 quad) v1-16) - ) - (let ((v1-18 (-> *death-adgif* quad 2 quad))) - (set! (-> gp-0 adgif quad 2 quad) v1-18) - ) - (let ((v1-20 (-> *death-adgif* quad 3 quad))) - (set! (-> gp-0 adgif quad 3 quad) v1-20) - ) - (let ((v1-22 (-> *death-adgif* quad 4 quad))) - (set! (-> gp-0 adgif quad 4 quad) v1-22) - ) - (.lvf vf4 (&-> (-> *time-of-day-context* current-prt-color) quad)) - (.lvf vf5 (&-> s5-0 color quad)) - (.lvf vf6 (&-> gp-0 fade quad)) - (.mul.vf vf5 vf5 vf4 :mask #b111) - (.mul.vf vf6 vf6 vf4 :mask #b111) - (.svf (&-> s5-0 color quad) vf5) - (.svf (&-> gp-0 fade quad) vf6) - (.mov v1-25 vf6) - (set! (-> gp-0 key) (the-as sparticle-launch-control 0)) - (set! (-> gp-0 binding) #f) - (let ((v1-26 (-> gp-0 sprite))) - (.lvf vf1 (&-> s5-0 x-y-z-sx quad)) - (.lvf vf2 (&-> s5-0 flag-rot-sy quad)) - (.lvf vf3 (&-> s5-0 color quad)) - (.svf (&-> v1-26 x-y-z-sx quad) vf1) - (.svf (&-> v1-26 flag-rot-sy quad) vf2) - (.sub.w.vf vf3 vf0 vf0 :mask #b1000) - (.svf (&-> v1-26 color quad) vf3) - ) - (.mov v1-27 vf3) - (logior! (-> gp-0 flags) (sp-cpuinfo-flag ready-to-launch)) - (set! (-> gp-0 cache-alpha) (-> s5-0 a)) - ) - 0 - (none) - ) - ) - -;; definition for function sp-clear-queue -;; INFO: Return type mismatch int vs none. -(defun sp-clear-queue () - (let ((gp-0 *sp-launch-queue*)) - (when (> (-> gp-0 in-use) 0) - (dotimes (s5-0 (-> gp-0 in-use)) - (let ((v1-4 (-> gp-0 queue s5-0))) - (sp-launch-particles-var - (-> v1-4 sp-system) - (-> v1-4 sp-launcher) - (-> v1-4 pos) - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 - ) - ) - ) - (set! (-> gp-0 in-use) 0) - 0 - ) - ) - 0 - (none) - ) - -;; definition for function sp-relaunch-setup-fields -;; INFO: Return type mismatch int vs none. -(defun sp-relaunch-setup-fields ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) - (let ((a1-1 (-> arg1 init-specs 0)) - (s4-0 (logand (-> arg2 flags) (sp-cpuinfo-flag level0 level1))) - ) - (set! (-> arg2 next-launcher) (the-as basic 0)) - (cond - ((and (logtest? (-> arg2 flags) (sp-cpuinfo-flag bit12)) - (zero? (logand (-> arg2 flags) (sp-cpuinfo-flag aux-list))) - ) - (let ((f20-0 (-> arg3 r-g-b-a x)) - (f22-0 (-> arg3 r-g-b-a y)) - (f24-0 (-> arg3 r-g-b-a z)) - (f26-0 (-> arg2 fade x)) - (f28-0 (-> arg2 fade y)) - (f30-0 (-> arg2 fade z)) - ) - (set! (-> arg3 r-g-b-a x) 99999.0) - (set! (-> arg3 r-g-b-a y) 99999.0) - (set! (-> arg3 r-g-b-a z) 99999.0) - (set! (-> arg2 fade x) 99999.0) - (set! (-> arg2 fade y) 99999.0) - (set! (-> arg2 fade z) 99999.0) - (let ((a1-2 - (sp-init-fields! - (-> arg3 x-y-z-sx) - (the-as (inline-array sp-field-init-spec) a1-1) - (sp-field-id sprite-fields-start) - (sp-field-id sprite-fields-end) - #f - ) - ) - ) - (sp-init-fields! - (&-> arg2 omega) - (the-as (inline-array sp-field-init-spec) a1-2) - (sp-field-id cpu-fields-start) - (sp-field-id cpu-fields-end) - #f - ) - ) - (logior! (-> arg2 flags) s4-0) - (if (logtest? (-> arg2 flags) (sp-cpuinfo-flag level1)) - (-> *level* level1) - (-> *level* level0) - ) - (let ((v1-16 (-> *time-of-day-context* current-prt-color))) - (if (= (-> arg3 r-g-b-a x) 99999.0) - (set! (-> arg3 r-g-b-a x) f20-0) - (set! (-> arg3 r-g-b-a x) (* (-> arg3 r-g-b-a x) (-> v1-16 x))) - ) - (if (= (-> arg3 r-g-b-a y) 99999.0) - (set! (-> arg3 r-g-b-a y) f22-0) - (set! (-> arg3 r-g-b-a y) (* (-> arg3 r-g-b-a y) (-> v1-16 y))) - ) - (if (= (-> arg3 r-g-b-a z) 99999.0) - (set! (-> arg3 r-g-b-a z) f24-0) - (set! (-> arg3 r-g-b-a z) (* (-> arg3 r-g-b-a z) (-> v1-16 z))) - ) - (if (= (-> arg2 fade x) 99999.0) - (set! (-> arg2 fade x) f26-0) - (set! (-> arg2 fade x) (* (-> arg2 fade x) (-> v1-16 x))) - ) - (if (= (-> arg2 fade y) 99999.0) - (set! (-> arg2 fade y) f28-0) - (set! (-> arg2 fade y) (* (-> arg2 fade y) (-> v1-16 y))) - ) - (if (= (-> arg2 fade z) 99999.0) - (set! (-> arg2 fade z) f30-0) - (set! (-> arg2 fade z) (* (-> arg2 fade z) (-> v1-16 z))) - ) - ) - ) - ) - (else - (let ((a1-3 - (sp-init-fields! - (-> arg3 x-y-z-sx) - (the-as (inline-array sp-field-init-spec) a1-1) - (sp-field-id sprite-fields-start) - (sp-field-id sprite-fields-end) - #f - ) - ) - ) - (sp-init-fields! - (&-> arg2 omega) - (the-as (inline-array sp-field-init-spec) a1-3) - (sp-field-id cpu-fields-start) - (sp-field-id cpu-fields-end) - #f - ) - ) - ) - ) - ) - 0 - 0 - (none) - ) - -;; definition for function sp-relaunch-particle-2d -;; INFO: Return type mismatch int vs none. -(defun sp-relaunch-particle-2d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) - (sp-relaunch-setup-fields arg0 arg1 arg2 arg3) - (when (logtest? (-> arg2 flags) (sp-cpuinfo-flag aux-list)) - (set! (-> arg2 func) add-to-sprite-aux-list) - (set! (-> arg3 r-g-b-a w) 0.0) - (set! (-> arg2 fade w) 0.0) - (logclear! (-> arg2 flags) (sp-cpuinfo-flag bit2)) - ) - 0 - (none) - ) - -;; definition for function sp-relaunch-particle-3d -;; INFO: Return type mismatch int vs none. -(defun sp-relaunch-particle-3d ((arg0 object) (arg1 sparticle-launcher) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-3d)) - (local-vars (v1-9 float) (v1-10 float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((s4-0 (new 'stack-no-clear 'quaternion))) - (let* ((v1-0 s4-0) - (a2-1 arg3) - (f0-0 (-> a2-1 qx-qy-qz-sy x)) - (f1-0 (-> a2-1 qx-qy-qz-sy y)) - (f3-0 (-> a2-1 qx-qy-qz-sy z)) - ) - (set! (-> v1-0 x) f0-0) - (set! (-> v1-0 y) f1-0) - (set! (-> v1-0 z) f3-0) - (set! (-> v1-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0)))) - ) - (set! (-> arg3 qx-qy-qz-sy x) 0.0) - (set! (-> arg3 qx-qy-qz-sy y) 0.0) - (set! (-> arg3 qx-qy-qz-sy z) 0.0) - (sp-relaunch-setup-fields arg0 arg1 arg2 arg3) - (let ((a1-1 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'quaternion)) - ) - (set-vector! a1-1 (-> arg3 qx-qy-qz-sy x) (-> arg3 qx-qy-qz-sy y) (-> arg3 qx-qy-qz-sy z) 1.0) - (quaternion-zxy! s3-0 a1-1) - (cond - ((logtest? (sp-cpuinfo-flag left-multiply-quat) (-> arg2 flags)) - (quaternion*! s3-0 s4-0 s3-0) - ) - (else - (if (logtest? (sp-cpuinfo-flag right-multiply-quat) (-> arg2 flags)) - (quaternion*! s3-0 s3-0 s4-0) - ) - ) - ) - (cond - ((< (-> s3-0 w) 0.0) - (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s3-0 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg3 qx-qy-qz-sy quad) vf1) - (.mov v1-9 vf1) - ) - (else - (.lvf vf1 (&-> arg3 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s3-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg3 qx-qy-qz-sy quad) vf1) - (.mov v1-10 vf1) - ) - ) - ) - ) - (cond - (*sp-60-hz* - (set! (-> arg2 rot-syvel x) (* 5.0 (-> arg2 rot-syvel x))) - (set! (-> arg2 rot-syvel y) (* 5.0 (-> arg2 rot-syvel y))) - (set! (-> arg2 rot-syvel z) (* 5.0 (-> arg2 rot-syvel z))) - ) - (else - (set! (-> arg2 rot-syvel x) (* 6.0 (-> arg2 rot-syvel x))) - (set! (-> arg2 rot-syvel y) (* 6.0 (-> arg2 rot-syvel y))) - (set! (-> arg2 rot-syvel z) (* 6.0 (-> arg2 rot-syvel z))) - ) - ) - (quaternion-zxy! (-> arg2 rotvel3d) (-> arg2 rot-syvel)) - 0 - (none) - ) - ) - -;; definition for method 9 of type sparticle-launch-control -;; INFO: Return type mismatch int vs none. -(defmethod initialize sparticle-launch-control ((obj sparticle-launch-control) (arg0 sparticle-launch-group) (arg1 process)) - (let ((s5-0 0)) - (set! (-> obj group) arg0) - (set! (-> obj proc) arg1) - (set! (-> obj local-clock) 0) - (set! (-> obj fade) 1.0) - (set! (-> obj matrix) 0) - (set! (-> obj last-spawn-frame) (+ (-> *display* real-actual-frame-counter) -2)) - (set! (-> obj last-spawn-time) 0) - (dotimes (s3-0 (-> arg0 length)) - (let* ((a0-2 (-> arg0 launcher s3-0)) - (a1-2 (-> *part-id-table* (-> a0-2 launcher))) - (v1-9 (-> obj data s5-0)) - ) - (when (nonzero? a1-2) - (set! (-> v1-9 group-item) a0-2) - (cond - ((= (-> a1-2 type) sparticle-launcher) - (set! (-> v1-9 accum) 0.0) - (set! (-> v1-9 spawn-time) (the-as uint (+ *particle-300hz-timer* -30000))) - (set! (-> v1-9 offset) (-> a0-2 offset)) - (set! (-> v1-9 randomize) (the-as uint 0)) - (cond - ((logtest? (-> a0-2 flags) (sp-group-item-flag start-dead)) - (logclear! (-> v1-9 flags) (sp-launch-state-flags launcher-active)) - (set! (-> v1-9 origin) #f) - (set! (-> v1-9 sprite3d) #f) - (set! (-> v1-9 sprite) #f) - ) - (else - (logior! (-> v1-9 flags) (sp-launch-state-flags launcher-active)) - (set! (-> v1-9 origin) (-> obj center)) - (set! (-> v1-9 sprite3d) #f) - (set! (-> v1-9 sprite) #f) - ) - ) - (+! s5-0 1) - ) - (else - (format 0 "initialize called with non-particle-launcher~%") - ) - ) - ) - ) - ) - (set! (-> obj length) s5-0) - ) - 0 - (none) - ) - -;; definition for method 9 of type sparticle-launch-group -;; INFO: Return type mismatch object vs sparticle-launch-control. -(defmethod create-launch-control sparticle-launch-group ((obj sparticle-launch-group) (arg0 process)) - (let ((gp-0 (the-as object (new 'process 'sparticle-launch-control (-> obj length))))) - (when (zero? (the-as sparticle-launch-control gp-0)) - (go process-drawable-art-error "memory") - (set! gp-0 0) - (goto cfg-4) - ) - (initialize (the-as sparticle-launch-control gp-0) obj arg0) - (label cfg-4) - (the-as sparticle-launch-control gp-0) - ) - ) - -;; definition for method 12 of type sparticle-launch-control -;; INFO: Return type mismatch int vs none. -(defmethod kill-and-free-particles sparticle-launch-control ((obj sparticle-launch-control)) - (countdown (v1-0 (-> obj length)) - (let ((a0-3 (-> obj data v1-0))) - (logclear! (-> a0-3 flags) (sp-launch-state-flags particles-active)) - ) - ) - (set! (-> obj local-clock) 0) - (set! (-> obj fade) 1.0) - (kill-all-particles-with-key obj) - (if (> (-> obj matrix) 0) - (sprite-release-user-hvdf (-> obj matrix)) - ) - 0 - (none) - ) - -;; definition for method 13 of type sparticle-launch-control -;; INFO: Return type mismatch int vs none. -(defmethod kill-particles sparticle-launch-control ((obj sparticle-launch-control)) - (kill-all-particles-with-key obj) - 0 - (none) - ) - -;; definition for method 10 of type sparticle-launch-control -(defmethod is-visible? sparticle-launch-control ((obj sparticle-launch-control) (arg0 vector)) - (let* ((v1-0 (-> obj group)) - (f0-0 (-> v1-0 bounds w)) - ) - (cond - ((= f0-0 0.0) - #t - ) - ((nonzero? (-> obj matrix)) - #t - ) - (else - (let ((gp-1 (vector+! (new 'stack-no-clear 'vector) arg0 (the-as vector (-> v1-0 bounds))))) - (set! (-> gp-1 w) f0-0) - (if (and *display-actor-vis* (or (not *display-actor-anim*) (name= *display-actor-anim* (-> obj proc name)))) - (add-debug-sphere - *display-actor-vis* - (bucket-id debug-draw0) - gp-1 - (-> gp-1 w) - (new 'static 'rgba :g #xff :a #x80) - ) - ) - (sphere-in-view-frustum? (the-as sphere gp-1)) - ) - ) - ) - ) - ) - -;; definition for method 11 of type sparticle-launch-control -;; INFO: Return type mismatch int vs object. -;; Used lq/sq -(defmethod spawn sparticle-launch-control ((obj sparticle-launch-control) (arg0 vector)) - (set! (-> obj center quad) (-> arg0 quad)) - (if (not (or (is-visible? obj arg0) (logtest? (-> obj group flags) (sp-group-flag always-draw screen-space)))) - (return (the-as object 0)) - ) - (let ((s4-0 *particle-300hz-timer*) - (s5-0 (-> obj last-spawn-time)) - ) - (let ((v1-8 (-> *display* real-actual-frame-counter))) - (if (!= v1-8 (+ (-> obj last-spawn-frame) 1)) - (set! s5-0 (- s4-0 (logand (the-as int (-> *sp-frame-time* x)) 255))) - ) - ) - (set! (-> obj last-spawn-frame) (-> *display* real-actual-frame-counter)) - (set! (-> obj last-spawn-time) s4-0) - (when (logtest? (-> obj group flags) (sp-group-flag use-local-clock)) - (set! s5-0 (-> obj local-clock)) - (+! (-> obj local-clock) (logand (the-as int (-> *sp-frame-time* x)) 255)) - (set! s4-0 (-> obj local-clock)) - ) - (let ((f30-0 (vector-vector-distance arg0 (math-camera-pos))) - (s3-1 (ash 1 (if *time-of-day-proc* - (-> *time-of-day-proc* 0 hour) - 0 - ) - ) - ) - ) - (if (nonzero? (-> obj matrix)) - (set! f30-0 0.0) - ) - (let ((s2-1 (-> obj length))) - (while (begin (label cfg-79) (nonzero? s2-1)) - (+! s2-1 -1) - (let* ((a3-0 (-> obj data s2-1)) - (v1-29 (-> a3-0 group-item)) - (a1-4 (-> *part-id-table* (-> v1-29 launcher))) - ) - (when (and a1-4 (nonzero? a1-4) (logtest? (-> a3-0 flags) (sp-launch-state-flags launcher-active))) - (let ((f0-2 1.0)) - (if (!= (-> v1-29 falloff-to) 0.0) - (set! f0-2 (- 1.0 (/ f30-0 (-> v1-29 falloff-to)))) - ) - (let ((a0-26 sparticle-launcher)) - (b! (!= (-> a1-4 type) a0-26) cfg-78 :delay (nop!)) - ) - (b! (zero? (logand (-> v1-29 flags) (sp-group-item-flag launch-asap))) cfg-36 :delay (nop!)) - (when (zero? (logand (-> a3-0 flags) (sp-launch-state-flags particles-active))) - (set! (-> a3-0 spawn-time) (the-as uint s4-0)) - (logior! (-> a3-0 flags) (sp-launch-state-flags particles-active)) - (if (< 0.0 f0-2) - (sp-launch-particles-var - (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - a1-4 - (-> a3-0 origin) - a3-0 - obj - f0-2 - ) - ) - ) - (b! #t cfg-77 :delay (nop!)) - (label cfg-36) - (when (logtest? s3-1 (-> v1-29 hour-mask)) - 0 - (goto cfg-77) - ) - (when (not (or (= (-> v1-29 fade-after) 0.0) (< f30-0 (-> v1-29 fade-after)))) - 0 - (b! #t cfg-77 :delay (nop!)) - (set! v1-29 (the-as sparticle-group-item 0)) - ) - (b! (nonzero? (-> v1-29 period)) cfg-50 :delay (empty-form)) - (let ((f0-4 (* 0.2 (the float (- s4-0 s5-0)) f0-2))) - (b! #t cfg-72 :delay (nop!)) - (label cfg-50) - (let ((a2-5 (mod (+ s5-0 (-> obj data s2-1 offset)) (the-as int (-> v1-29 period)))) - (a0-56 (mod (the-as uint (+ s4-0 (-> obj data s2-1 offset))) (-> v1-29 period))) - (t0-2 (-> v1-29 length)) - ) - (set! f0-4 (cond - ((and (< a2-5 (the-as int t0-2)) (< a0-56 t0-2)) - (* 0.2 (the float (- s4-0 s5-0)) f0-2) - ) - ((and (< a2-5 (the-as int t0-2)) (>= a0-56 t0-2)) - (* 0.2 (the float (- t0-2 (the-as uint a2-5))) f0-2) - ) - ((and (>= a2-5 (the-as int t0-2)) (< a0-56 t0-2)) - (* 0.2 (the float a0-56) f0-2) - ) - (else - (when (zero? (logand (-> v1-29 flags) (sp-group-item-flag bit1))) - 0 - (goto cfg-77) - ) - (when (< (the-as uint (- s4-0 (the-as int (-> obj data s2-1 spawn-time)))) (-> v1-29 period)) - 0 - (goto cfg-77) - ) - (set! (-> obj data s2-1 offset) (- (-> v1-29 period) a0-56)) - (* 0.2 (the float (- s4-0 s5-0)) f0-2) - ) - ) - ) - ) - (label cfg-72) - (set! (-> a3-0 spawn-time) (the-as uint s4-0)) - (logior! (-> a3-0 flags) (sp-launch-state-flags particles-active)) - (if (< 0.0 f0-4) - (sp-launch-particles-var - (if (logtest? (-> v1-29 flags) (sp-group-item-flag is-3d)) - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - a1-4 - (-> a3-0 origin) - a3-0 - obj - f0-4 - ) - ) - ) - ) - (label cfg-77) - (b! #t cfg-79 :delay (nop!)) - (label cfg-78) - (format 0 "spawn called for non-sparticle-launcher~%") - ) - ) - ) - ) - ) - ) - 0 - ) - -;; definition for function sparticle-track-root -;; INFO: Return type mismatch int vs none. -(defun sparticle-track-root ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 vector)) - (let ((v1-3 (-> (the-as process-drawable (-> arg1 key proc)) root trans))) - (set! (-> arg2 x) (-> v1-3 x)) - (set! (-> arg2 y) (-> v1-3 y)) - (set! (-> arg2 z) (-> v1-3 z)) - ) - 0 - (none) - ) - -;; definition for function sparticle-track-root-prim -;; INFO: Return type mismatch int vs none. -(defun sparticle-track-root-prim ((arg0 object) (arg1 sparticle-cpuinfo) (arg2 vector)) - (let ((v1-4 (-> (the-as collide-shape (-> (the-as process-drawable (-> arg1 key proc)) root)) root-prim prim-core)) - ) - (set! (-> arg2 x) (-> v1-4 world-sphere x)) - (set! (-> arg2 y) (-> v1-4 world-sphere y)) - (set! (-> arg2 z) (-> v1-4 world-sphere z)) - ) - 0 - (none) - ) - -;; definition for function birth-func-copy-rot-color -;; INFO: Return type mismatch int vs none. -(defun birth-func-copy-rot-color ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) - (local-vars (v1-4 float) (v1-5 float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((s5-0 (-> arg4 sprite))) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let* ((v1-0 arg2) - (f0-0 (-> v1-0 qx-qy-qz-sy x)) - (f1-0 (-> v1-0 qx-qy-qz-sy y)) - (f3-0 (-> v1-0 qx-qy-qz-sy z)) - ) - (set! (-> s4-0 x) f0-0) - (set! (-> s4-0 y) f1-0) - (set! (-> s4-0 z) f3-0) - (set! (-> s4-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0)))) - ) - (quaternion-rotate-y! (the-as quaternion s4-0) (the-as quaternion s4-0) (-> s5-0 sprite rot)) - (let ((v1-3 arg2)) - (cond - ((< (-> s4-0 w) 0.0) - (.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s4-0 quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-3 qx-qy-qz-sy quad) vf1) - (.mov v1-4 vf1) - ) - (else - (.lvf vf1 (&-> v1-3 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s4-0 quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-3 qx-qy-qz-sy quad) vf1) - (.mov v1-5 vf1) - ) - ) - ) - ) - (set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r)) - (set! (-> arg2 r-g-b-a y) (-> s5-0 sprite g)) - (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b)) - ) - 0 - (none) - ) - ) - -;; definition for symbol *global-toggle*, type int -(define *global-toggle* 0) - -;; definition for function birth-func-copy2-rot-color -;; INFO: Return type mismatch int vs none. -;; Used lq/sq -(defun birth-func-copy2-rot-color ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) - (local-vars (v1-15 float) (v1-16 float)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((s5-0 (-> arg4 sprite))) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let* ((v1-0 arg2) - (f0-0 (-> v1-0 qx-qy-qz-sy x)) - (f1-0 (-> v1-0 qx-qy-qz-sy y)) - (f3-0 (-> v1-0 qx-qy-qz-sy z)) - ) - (set! (-> s4-0 x) f0-0) - (set! (-> s4-0 y) f1-0) - (set! (-> s4-0 z) f3-0) - (set! (-> s4-0 w) (sqrtf (- (- (- 1.0 (* f3-0 f3-0)) (* f1-0 f1-0)) (* f0-0 f0-0)))) - ) - (let ((a1-1 (new-stack-vector0))) - (set! (-> a1-1 y) (-> s5-0 sprite rot)) - (set! (-> a1-1 z) (if (logtest? *global-toggle* 1) - (the float (sar (shl (the int (- 16384.0 (-> s5-0 sprite sx))) 48) 48)) - (the float (sar (shl (the int (+ 16384.0 (-> s5-0 sprite sx))) 48) 48)) - ) - ) - (quaternion-zxy! (the-as quaternion s4-0) a1-1) - ) - (let ((v1-14 arg2)) - (cond - ((< (-> s4-0 w) 0.0) - (.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s4-0 quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-14 qx-qy-qz-sy quad) vf1) - (.mov v1-15 vf1) - ) - (else - (.lvf vf1 (&-> v1-14 qx-qy-qz-sy quad)) - (.lvf vf2 (&-> s4-0 quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-14 qx-qy-qz-sy quad) vf1) - (.mov v1-16 vf1) - ) - ) - ) - ) - (set! (-> arg2 r-g-b-a x) (-> s5-0 sprite r)) - (set! (-> arg2 r-g-b-a y) (-> s5-0 sprite g)) - (set! (-> arg2 r-g-b-a z) (-> s5-0 sprite b)) - ) - (set! *global-toggle* (+ *global-toggle* 1)) - 0 - (none) - ) - ) - -;; definition for function birth-func-copy-omega-to-z -;; INFO: Return type mismatch int vs none. -(defun birth-func-copy-omega-to-z ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) - (set! (-> arg2 qx-qy-qz-sy z) (+ -16384.0 (-> arg1 omega))) - (set! (-> arg1 next-time) (-> arg4 sprite next-time)) - (set! (-> arg2 x-y-z-sx w) (* 163.85638 (the float (-> arg4 sprite next-time)))) - 0 - (none) - ) - -;; definition for function birth-func-random-next-time -;; INFO: Return type mismatch int vs none. -(defun birth-func-random-next-time ((arg0 sparticle-system) - (arg1 sparticle-cpuinfo) - (arg2 sprite-vec-data-3d) - (arg3 sparticle-launcher) - (arg4 sparticle-launch-state) - ) - (set! (-> arg1 next-time) (the-as uint (the int (rand-vu-float-range 0.0 (-> arg1 user-float))))) - 0 - (none) - ) diff --git a/test/decompiler/reference/engine/gfx/sparticle/sparticle_REF.gc b/test/decompiler/reference/engine/gfx/sparticle/sparticle_REF.gc deleted file mode 100644 index 6c542b6315..0000000000 --- a/test/decompiler/reference/engine/gfx/sparticle/sparticle_REF.gc +++ /dev/null @@ -1,731 +0,0 @@ -;;-*-Lisp-*- -(in-package goal) - -;; definition for method 2 of type sparticle-cpuinfo -;; INFO: Return type mismatch object vs sparticle-cpuinfo. -(defmethod print sparticle-cpuinfo ((obj sparticle-cpuinfo)) - (format #t "~%") - (dotimes (s5-0 16) - (format #t "~D:~F~%" s5-0 (the-as float (-> obj data s5-0))) - ) - (format #t "TIMER:~D~%" (-> obj timer)) - (the-as sparticle-cpuinfo (format #t "FLAGS:~X~%" (-> obj flags))) - ) - -;; definition for function sp-particle-copy! -;; INFO: Return type mismatch basic vs none. -;; Used lq/sq -(defun sp-particle-copy! ((arg0 sparticle-cpuinfo) (arg1 sparticle-cpuinfo)) - (let ((v1-1 (-> arg1 sprite x-y-z-sx quad))) - (set! (-> arg0 sprite x-y-z-sx quad) v1-1) - ) - (let ((v1-3 (-> arg1 sprite flag-rot-sy quad))) - (set! (-> arg0 sprite flag-rot-sy quad) v1-3) - ) - (let ((v1-5 (-> arg1 sprite color quad))) - (set! (-> arg0 sprite color quad) v1-5) - ) - (dotimes (v1-6 10) - (set! (-> arg0 adgif prims v1-6) (-> arg1 adgif prims v1-6)) - ) - (set! (-> arg0 vel-sxvel quad) (-> arg1 vel-sxvel quad)) - (set! (-> arg0 rot-syvel quad) (-> arg1 rot-syvel quad)) - (set! (-> arg0 fade quad) (-> arg1 fade quad)) - (set! (-> arg0 acc quad) (-> arg1 acc quad)) - (set! (-> arg0 friction) (-> arg1 friction)) - (set! (-> arg0 timer) (-> arg1 timer)) - (set! (-> arg0 flags) (-> arg1 flags)) - (set! (-> arg0 user-float) (-> arg1 user-float)) - (set! (-> arg0 func) (-> arg1 func)) - (none) - ) - -;; definition for method 0 of type sparticle-system -(defmethod new sparticle-system ((allocation symbol) - (type-to-make type) - (arg0 int) - (arg1 int) - (arg2 symbol) - (arg3 pointer) - (arg4 (inline-array adgif-shader)) - ) - (let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - (let* ((v1-3 (/ (+ arg0 63) 64)) - (a0-2 (/ (+ arg1 63) 64)) - (a1-2 (* v1-3 64)) - (a2-2 (* a0-2 64)) - (s2-1 (+ v1-3 a0-2)) - (s5-1 (+ a1-2 a2-2)) - ) - (set! (-> gp-0 blocks 0) v1-3) - (set! (-> gp-0 length 0) a1-2) - (set! (-> gp-0 num-alloc 0) 0) - (set! (-> gp-0 blocks 1) a0-2) - (set! (-> gp-0 length 1) a2-2) - (set! (-> gp-0 num-alloc 1) 0) - (set! (-> gp-0 is-3d) arg2) - (set! (-> gp-0 alloc-table) (the-as (pointer uint64) (malloc 'global (* s2-1 8)))) - (set! (-> gp-0 cpuinfo-table) (the-as (inline-array sparticle-cpuinfo) (malloc 'global (* 144 s5-1)))) - (set! (-> gp-0 vecdata-table) arg3) - (set! (-> gp-0 adgifdata-table) arg4) - (dotimes (v1-5 s2-1) - (set! (-> gp-0 alloc-table v1-5) (the-as uint -1)) - ) - (dotimes (s4-1 s5-1) - (set! (-> gp-0 cpuinfo-table s4-1 valid) #f) - (set! (-> gp-0 cpuinfo-table s4-1 sprite) - (the-as sprite-vec-data-2d (&+ (-> gp-0 vecdata-table) (* 48 s4-1))) - ) - (set! (-> gp-0 cpuinfo-table s4-1 adgif) (-> gp-0 adgifdata-table s4-1)) - (adgif-shader<-texture-simple! (-> gp-0 adgifdata-table s4-1) (the-as texture #f)) - (set! (-> gp-0 adgifdata-table s4-1 alpha) (new 'static 'gs-miptbp :tbp1 #x48)) - ) - ) - gp-0 - ) - ) - -;; definition for symbol *sp-particle-system-2d*, type sparticle-system -(define - *sp-particle-system-2d* - (new 'global 'sparticle-system 1920 128 #f (-> *sprite-array-2d* vec-data) (-> *sprite-array-2d* adgif-data)) - ) - -;; definition for symbol *sp-particle-system-3d*, type sparticle-system -(define - *sp-particle-system-3d* - (new 'global 'sparticle-system 256 0 #t (-> *sprite-array-3d* vec-data) (-> *sprite-array-3d* adgif-data)) - ) - -;; definition for function sp-get-block-size -(defun sp-get-block-size ((arg0 sparticle-system) (arg1 int)) - (let ((v0-0 0)) - (let ((v1-0 0) - (a2-0 (-> arg0 blocks 0)) - ) - (when (= arg1 1) - (set! v1-0 a2-0) - (set! a2-0 (-> arg0 blocks 1)) - ) - (dotimes (a1-3 a2-0) - (if (!= (-> arg0 alloc-table (+ v1-0 a1-3)) -1) - (set! v0-0 (+ a1-3 1)) - ) - ) - ) - v0-0 - ) - ) - -;; definition for function sp-get-approx-alloc-size -(defun sp-get-approx-alloc-size ((arg0 sparticle-system) (arg1 int)) - (let ((a3-0 arg1) - (v1-0 0) - ) - (let ((a1-1 0) - (a2-0 (-> arg0 blocks 0)) - ) - (when (= a3-0 1) - (set! a1-1 a2-0) - (set! a2-0 (-> arg0 blocks 1)) - ) - (dotimes (a3-3 a2-0) - (if (!= (-> arg0 alloc-table (+ a1-1 a3-3)) -1) - (set! v1-0 (+ a3-3 1)) - ) - ) - ) - (* v1-0 64) - ) - ) - -;; definition for function sp-free-particle -;; INFO: Return type mismatch int vs none. -(defun sp-free-particle ((arg0 sparticle-system) (arg1 int) (arg2 sparticle-cpuinfo) (arg3 sprite-vec-data-2d)) - (if (and (-> arg2 binding) (nonzero? (-> arg2 binding))) - (logclear! (-> arg2 binding flags) (sp-launch-state-flags launcher-active particles-active)) - ) - (let ((v1-6 (/ arg1 64)) - (t0-4 (logand arg1 63)) - ) - (logior! (-> arg0 alloc-table v1-6) (ash 1 t0-4)) - ) - (if (< arg1 (-> arg0 length 0)) - (+! (-> arg0 num-alloc 0) -1) - (+! (-> arg0 num-alloc 1) -1) - ) - (set! (-> arg2 valid) #f) - (set! (-> arg3 a) 0.0) - 0 - (none) - ) - -;; definition for function sp-get-particle -;; WARN: Unsupported inline assembly instruction kind - [movz a2, t3, t2] -;; WARN: Unsupported inline assembly instruction kind - [movz a2, t3, t2] -;; WARN: Unsupported inline assembly instruction kind - [movz a2, t3, t2] -;; WARN: Unsupported inline assembly instruction kind - [movz a2, t3, t2] -;; WARN: Unsupported inline assembly instruction kind - [movz a2, t3, t2] -;; WARN: Unsupported inline assembly instruction kind - [movz a2, t2, t1] -(defun sp-get-particle ((arg0 sparticle-system) (arg1 int) (arg2 sparticle-launch-state)) - (local-vars - (a2-3 int) - (a2-4 int) - (a2-5 int) - (a2-6 int) - (a2-7 int) - (a2-8 int) - (t1-16 int) - (t1-17 int) - (t1-18 int) - (t1-19 int) - (t1-20 int) - (t3-5 int) - ) - (let ((v1-0 0) - (t0-0 (-> arg0 blocks 0)) - (a3-0 0) - ) - (when (= arg1 1) - (set! v1-0 t0-0) - (set! t0-0 (-> arg0 blocks 1)) - ) - (when arg2 - (set! a3-0 (the-as int (-> arg2 randomize))) - (+! (-> arg2 randomize) 1) - (when (= (-> arg2 randomize) t0-0) - (set! (-> arg2 randomize) (the-as uint 0)) - 0 - ) - ) - (dotimes (a2-1 t0-0) - (when (nonzero? (-> arg0 alloc-table (+ v1-0 a3-0))) - (let ((a2-2 0) - (t1-15 (-> arg0 alloc-table (+ v1-0 a3-0))) - (t0-4 (* (+ v1-0 a3-0) 64)) - ) - 0 - 0 - (let ((t2-4 (shl t1-15 32)) - (t3-0 (+ a2-2 32)) - ) - (move-if-not-zero t1-16 t2-4 t2-4 t1-15) - (.movz a2-3 t3-0 t2-4 a2-2) - ) - (let ((t2-5 (shl t1-16 16)) - (t3-1 (+ a2-3 16)) - ) - (move-if-not-zero t1-17 t2-5 t2-5 t1-16) - (.movz a2-4 t3-1 t2-5 a2-3) - ) - (let ((t2-6 (* t1-17 256)) - (t3-2 (+ a2-4 8)) - ) - (move-if-not-zero t1-18 t2-6 t2-6 t1-17) - (.movz a2-5 t3-2 t2-6 a2-4) - ) - (let ((t2-7 (* t1-18 16)) - (t3-3 (+ a2-5 4)) - ) - (move-if-not-zero t1-19 t2-7 t2-7 t1-18) - (.movz a2-6 t3-3 t2-7 a2-5) - ) - (let ((t2-8 (* t1-19 4)) - (t3-4 (+ a2-6 2)) - ) - (move-if-not-zero t1-20 t2-8 t2-8 t1-19) - (.movz a2-7 t3-4 t2-8 a2-6) - (let ((t1-21 (* t1-20 2)) - (t2-9 (+ a2-7 1)) - ) - (move-if-not-zero t3-5 t1-21 t1-21 t3-4) - (.movz a2-8 t2-9 t1-21 a2-7) - ) - ) - (let ((t0-5 (+ t0-4 a2-8))) - (set! (-> arg0 alloc-table (+ v1-0 a3-0)) - (logxor (-> arg0 alloc-table (+ v1-0 a3-0)) (the-as uint (ash 1 a2-8))) - ) - (+! (-> arg0 num-alloc arg1) 1) - (let ((v1-9 (-> arg0 cpuinfo-table t0-5))) - (set! (-> v1-9 valid) #t) - (return v1-9) - ) - ) - ) - ) - (+! a3-0 1) - (if (= a3-0 t0-0) - (set! a3-0 0) - ) - ) - ) - (the-as sparticle-cpuinfo #f) - ) - -;; definition for function sp-kill-particle -;; INFO: Return type mismatch symbol vs none. -;; WARN: Expression building failed: Function sp-kill-particle has a return type of none, but the expression builder found a return statement. -(defun sp-kill-particle ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (cond - ((>= (the-as int arg1) #x70000000) - (set! (-> arg1 timer) 0) - 0 - ) - (else - (let ((a2-1 (/ (the-as int (- (the-as uint arg1) (the-as uint (-> arg0 cpuinfo-table 0)))) 144))) - (when (or (< a2-1 0) (>= a2-1 (+ (-> arg0 length 0) (-> arg0 length 1)))) - (format 0 "Tried to release particle ~D~%" a2-1) - (return #f) - ) - (sp-free-particle arg0 a2-1 arg1 (-> arg1 sprite)) - ) - ) - ) - #t - (none) - ) - -;; definition for function sp-orbiter -;; INFO: Return type mismatch int vs none. -(defun sp-orbiter ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (let* ((f2-0 (-> arg1 omega)) - (f0-0 (-> arg1 radius)) - (f4-0 (-> arg1 vel-sxvel x)) - (f24-0 (-> arg1 vel-sxvel y)) - (f1-0 (-> arg1 vel-sxvel z)) - (f3-0 (-> *sp-frame-time* y)) - (f28-0 (+ f2-0 (* f4-0 f3-0))) - ) - (set! (-> arg1 omega) f28-0) - (let ((f30-0 (+ f0-0 (* f1-0 f3-0)))) - (set! (-> arg1 radius) f30-0) - (let ((f26-0 (sin f28-0)) - (f28-1 (cos f28-0)) - (f22-0 (sin (* 0.5 f24-0))) - (f0-5 (cos (* 0.5 f24-0))) - (a1-1 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (let ((s3-0 (new 'stack-no-clear 'matrix))) - (set-vector! a1-1 (* f22-0 f28-1) 0.0 (* f22-0 f26-0) f0-5) - (quaternion*! (-> arg1 rotvel3d) (the-as quaternion a1-1) (-> arg1 rotvel3d)) - (quaternion-normalize! (-> arg1 rotvel3d)) - (set-vector! s4-0 (* f26-0 f30-0) 0.0 (* f28-1 f30-0) 1.0) - (quaternion->matrix s3-0 (-> arg1 rotvel3d)) - (vector-matrix*! s4-0 s4-0 s3-0) - ) - (let ((v1-3 (the-as object (-> arg1 user-float)))) - (set! (-> arg2 x) (+ (-> s4-0 x) (-> (the-as sprite-vec-data-2d v1-3) x))) - (set! (-> arg2 y) (+ (-> s4-0 y) (-> (the-as sprite-vec-data-2d v1-3) y))) - (set! (-> arg2 z) (+ (-> s4-0 z) (-> (the-as sprite-vec-data-2d v1-3) z))) - ) - ) - ) - ) - 0 - (none) - ) - -;; definition for function sp-process-block-2d -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; definition for function sp-process-block-3d -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; definition for function sp-copy-to-spr -;; INFO: Return type mismatch int vs none. -(defun sp-copy-to-spr ((arg0 int) (arg1 pointer) (arg2 int)) - (let ((a2-1 (/ (+ arg2 15) 16))) - (dma-send-to-spr-no-flush (the-as uint arg0) (the-as uint arg1) (the-as uint a2-1) #t) - ) - 0 - (none) - ) - -;; definition for function sp-copy-from-spr -;; INFO: Return type mismatch int vs none. -(defun sp-copy-from-spr ((arg0 int) (arg1 pointer) (arg2 int)) - (let ((a2-1 (/ (+ arg2 15) 16))) - (dma-send-from-spr-no-flush (the-as uint arg1) (the-as uint arg0) (the-as uint a2-1) #t) - ) - 0 - (none) - ) - -;; definition for function memcpy -;; ERROR: function was not converted to expressions. Cannot decompile. - -;; definition for function sp-process-block -;; INFO: Return type mismatch int vs none. -;; Used lq/sq -(defun sp-process-block ((arg0 sparticle-system) (arg1 int) (arg2 sprite-array-2d) (arg3 int)) - (local-vars - (sv-16 int) - (sv-32 int) - (sv-48 (function sparticle-system int int int int symbol none)) - (sv-64 sparticle-system) - (sv-80 int) - (sv-96 int) - (sv-112 int) - (sv-128 (function sparticle-system int int int int symbol none)) - (sv-144 sparticle-system) - (sv-160 int) - (sv-176 int) - (sv-192 int) - ) - (let ((s3-0 16) - (s2-0 (* 144 arg3)) - (s5-0 (* 48 arg3)) - ) - (set! sv-32 (* 80 arg3)) - (let ((s1-0 (+ s3-0 s2-0))) - (set! sv-16 (+ s1-0 s5-0)) - (sp-copy-to-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) - (sp-copy-to-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) - (let ((t9-2 sp-copy-to-spr) - (a1-7 (-> arg0 adgifdata-table arg1)) - ) - (t9-2 sv-16 (the-as pointer a1-7) sv-32) - ) - (set! sv-80 (+ #x70000000 s3-0)) - (set! sv-96 (+ #x70000000 s1-0)) - (cond - ((-> arg0 is-3d) - (set! sv-48 sp-process-block-3d) - (set! sv-64 arg0) - (set! sv-112 arg1) - (let ((t1-0 (paused?))) - (sv-48 sv-64 sv-80 sv-96 sv-112 arg3 t1-0) - ) - ) - (else - (set! sv-128 sp-process-block-2d) - (set! sv-144 arg0) - (set! sv-160 sv-80) - (set! sv-176 sv-96) - (set! sv-192 arg1) - (let ((t1-1 (paused?))) - (sv-128 sv-144 sv-160 sv-176 sv-192 arg3 t1-1) - ) - ) - ) - (sp-copy-from-spr s3-0 (the-as pointer (-> arg0 cpuinfo-table arg1)) s2-0) - (sp-copy-from-spr s1-0 (&+ (-> arg0 vecdata-table) (* 48 arg1)) s5-0) - ) - ) - 0 - (none) - ) - -;; definition for function sp-process-particle-system -;; INFO: Return type mismatch int vs none. -(defun sp-process-particle-system ((arg0 sparticle-system) (arg1 int) (arg2 sprite-array-2d)) - (let* ((v1-0 16) - (s1-0 (/ (- #x4000 v1-0) 272)) - (s3-0 0) - (s4-0 (sp-get-approx-alloc-size arg0 arg1)) - ) - (if (= arg1 1) - (set! s3-0 (* (-> arg0 blocks 0) 64)) - ) - (set! (-> arg2 num-valid arg1) s4-0) - (flush-cache 0) - (while (>= s4-0 s1-0) - (sp-process-block arg0 s3-0 arg2 s1-0) - (set! s4-0 (- s4-0 s1-0)) - (+! s3-0 s1-0) - ) - (if (> s4-0 0) - (sp-process-block arg0 s3-0 arg2 s4-0) - ) - ) - 0 - (none) - ) - -;; definition (perm) for symbol *particles-flag*, type symbol -(define-perm *particles-flag* symbol #t) - -;; definition for function forall-particles-with-key-runner -;; INFO: Return type mismatch int vs none. -;; Used lq/sq -(defun forall-particles-with-key-runner ((arg0 sparticle-launch-control) - (arg1 (function sparticle-system sparticle-cpuinfo none)) - (arg2 sparticle-system) - ) - (local-vars (sv-16 int)) - (let ((s3-0 (the-as object (-> arg2 cpuinfo-table 0))) - (s2-0 (&+ (-> arg2 vecdata-table) 0)) - (s1-0 (+ (-> arg2 blocks 0) (-> arg2 blocks 1))) - ) - (dotimes (s0-0 s1-0) - (cond - ((!= (-> arg2 alloc-table s0-0) -1) - (set! sv-16 0) - (while (< sv-16 64) - (if (and (-> (the-as sparticle-cpuinfo s3-0) valid) (= (-> (the-as sparticle-cpuinfo s3-0) key) arg0)) - (arg1 arg2 (the-as sparticle-cpuinfo s3-0)) - ) - (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 1)) - (&+! s2-0 48) - (set! sv-16 (+ sv-16 1)) - ) - ) - (else - (set! s3-0 (-> (the-as (inline-array sparticle-cpuinfo) s3-0) 64)) - (&+! s2-0 3072) - ) - ) - ) - ) - 0 - (none) - ) - -;; definition for function forall-particles-with-key -;; INFO: Return type mismatch int vs none. -(defun forall-particles-with-key ((arg0 sparticle-launch-control) - (arg1 (function sparticle-system sparticle-cpuinfo none)) - (arg2 symbol) - (arg3 symbol) - ) - (if arg2 - (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-2d*) - ) - (if arg3 - (forall-particles-with-key-runner arg0 arg1 *sp-particle-system-3d*) - ) - 0 - (none) - ) - -;; definition for function sparticle-kill-it -;; INFO: Return type mismatch int vs none. -(defun sparticle-kill-it ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (set! (-> arg1 timer) 0) - (set! (-> arg1 func) (the-as basic 0)) - (when (and (-> arg1 binding) (nonzero? (-> arg1 binding))) - (logclear! (-> arg1 binding flags) (sp-launch-state-flags launcher-active particles-active)) - (set! (-> arg1 binding) #f) - ) - 0 - (none) - ) - -;; definition for function sparticle-kill-it-level0 -;; INFO: Return type mismatch int vs none. -(defun sparticle-kill-it-level0 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level0)) - (sparticle-kill-it arg0 arg1) - ) - 0 - (none) - ) - -;; definition for function sparticle-kill-it-level1 -;; INFO: Return type mismatch int vs none. -(defun sparticle-kill-it-level1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo)) - (if (logtest? (-> arg1 flags) (sp-cpuinfo-flag level1)) - (sparticle-kill-it arg0 arg1) - ) - 0 - (none) - ) - -;; definition for function sparticle-60-to-50 -;; INFO: Return type mismatch int vs none. -(defun sparticle-60-to-50 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 pointer)) - (let ((gp-0 (-> arg1 rotvel3d)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) - (vector-angle<-quaternion! (the-as vector s5-0) gp-0) - (set! (-> s5-0 w) (* 12516.455 (-> s5-0 w))) - (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w)) - ) - 0 - (none) - ) - -;; definition for function sparticle-50-to-60 -;; INFO: Return type mismatch int vs none. -(defun sparticle-50-to-60 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 pointer)) - (let ((gp-0 (-> arg1 rotvel3d)) - (s5-0 (new 'stack-no-clear 'quaternion)) - ) - (vector-angle<-quaternion! (the-as vector s5-0) gp-0) - (set! (-> s5-0 w) (* 8691.982 (-> s5-0 w))) - (quaternion-vector-angle! gp-0 (the-as vector s5-0) (-> s5-0 w)) - ) - 0 - (none) - ) - -;; definition for function kill-all-particles-with-key -;; INFO: Return type mismatch int vs none. -(defun kill-all-particles-with-key ((arg0 sparticle-launch-control)) - (forall-particles-with-key arg0 sparticle-kill-it #t #t) - 0 - (none) - ) - -;; definition for function forall-particles-runner -;; INFO: Return type mismatch int vs none. -(defun forall-particles-runner ((arg0 (function sparticle-system sparticle-cpuinfo pointer none)) (arg1 sparticle-system)) - (let ((s4-0 (the-as object (-> arg1 cpuinfo-table 0))) - (s3-0 (&+ (-> arg1 vecdata-table) 0)) - (s2-0 (+ (-> arg1 blocks 0) (-> arg1 blocks 1))) - ) - (dotimes (s1-0 s2-0) - (cond - ((!= (-> arg1 alloc-table s1-0) -1) - (dotimes (s0-0 64) - (if (-> (the-as sparticle-cpuinfo s4-0) valid) - (arg0 arg1 (the-as sparticle-cpuinfo s4-0) s3-0) - ) - (set! s4-0 (+ (the-as uint s4-0) 144)) - (&+! s3-0 48) - ) - ) - (else - (set! s4-0 (&+ (the-as pointer s4-0) 9216)) - (&+! s3-0 3072) - ) - ) - ) - ) - 0 - (none) - ) - -;; definition for function forall-particles -;; INFO: Return type mismatch int vs none. -(defun forall-particles ((arg0 function) (arg1 symbol) (arg2 symbol)) - (if arg1 - (forall-particles-runner - (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) - *sp-particle-system-2d* - ) - ) - (if arg2 - (forall-particles-runner - (the-as (function sparticle-system sparticle-cpuinfo pointer none) arg0) - *sp-particle-system-3d* - ) - ) - 0 - (none) - ) - -;; definition for function kill-all-particles-in-level -(defun kill-all-particles-in-level ((arg0 level)) - (forall-particles - (if (zero? (-> arg0 index)) - sparticle-kill-it-level0 - sparticle-kill-it-level1 - ) - #t - #t - ) - 0 - ) - -;; definition for function all-particles-50-to-60 -(defun all-particles-50-to-60 () - (forall-particles-runner sparticle-50-to-60 *sp-particle-system-3d*) - (none) - ) - -;; definition for function all-particles-60-to-50 -(defun all-particles-60-to-50 () - (forall-particles-runner sparticle-60-to-50 *sp-particle-system-3d*) - (none) - ) - -;; definition for function set-particle-frame-time -;; INFO: Return type mismatch int vs none. -(defun set-particle-frame-time ((arg0 int)) - (cond - ((= arg0 5) - (set-vector! *sp-frame-time* 0.00000000000000000000000000000000000001175495 5.0 1.0 1.0) - ) - ((= arg0 6) - (set-vector! *sp-frame-time* 0.000000000000000000000000000000000000011754952 6.0 1.2 1.2) - ) - ((= arg0 10) - (set-vector! *sp-frame-time* 0.000000000000000000000000000000000000011754958 10.0 2.0 2.0) - ) - ((= arg0 12) - (set-vector! *sp-frame-time* 0.00000000000000000000000000000000000001175496 12.0 2.4 2.4) - ) - ) - 0 - (none) - ) - -;; definition for function process-particles -;; INFO: Return type mismatch int vs none. -;; WARN: Unsupported inline assembly instruction kind - [mfc0 gp, Count] -;; WARN: Unsupported inline assembly instruction kind - [mfc0 v1, Count] -(defun process-particles () - (local-vars (v1-29 int) (gp-0 int)) - (when *particles-flag* - 0 - 0 - (.mfc0 gp-0 Count) - (set! *sp-launcher-lock* #t) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) - (let ((v1-14 (logand (the-as int (-> *sp-frame-time* x)) 255))) - (set! *particle-300hz-timer* (+ *particle-300hz-timer* v1-14)) - (cond - (*sp-60-hz* - (when (or (= v1-14 6) (= v1-14 12)) - (set! *sp-60-hz* #f) - (all-particles-60-to-50) - ) - ) - (else - (when (or (= v1-14 5) (= v1-14 10)) - (set! *sp-60-hz* #t) - (all-particles-50-to-60) - ) - ) - ) - ) - (clear-sprite-aux-list) - (sp-process-particle-system *sp-particle-system-2d* 0 *sprite-array-2d*) - (sp-process-particle-system *sp-particle-system-2d* 1 *sprite-array-2d*) - (sp-process-particle-system *sp-particle-system-3d* 0 (the-as sprite-array-2d *sprite-array-3d*)) - (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #x80 :b #xff :a #x80) - ) - ) - (set! *sp-launcher-lock* #f) - (sp-clear-queue) - (.mfc0 v1-29 Count) - (let ((a2-5 (- v1-29 gp-0))) - (if *display-sprite-info* - (format - *stdcon* - "Particle time = ~D cycles for ~D 2D [~D warp] and ~D HUD and ~D 3D~%" - a2-5 - (-> *sp-particle-system-2d* num-alloc 0) - (-> *sprite-aux-list* entry) - (-> *sp-particle-system-2d* num-alloc 1) - (-> *sp-particle-system-3d* num-alloc 0) - ) - ) - ) - ) - 0 - (none) - ) diff --git a/test/decompiler/reference/engine/ps2/timer_REF.gc b/test/decompiler/reference/engine/ps2/timer_REF.gc index d9f6a43251..1419d67790 100644 --- a/test/decompiler/reference/engine/ps2/timer_REF.gc +++ b/test/decompiler/reference/engine/ps2/timer_REF.gc @@ -92,7 +92,7 @@ ) ;; definition for function stopwatch-stop -;; INFO: Return type mismatch int vs uint. +;; INFO: Return type mismatch int vs none. ;; WARN: Unsupported inline assembly instruction kind - [mfc0 a1, Count] (defun stopwatch-stop ((arg0 stopwatch)) (local-vars (a1-0 int)) @@ -102,7 +102,8 @@ (.mfc0 a1-0 Count) (+! (-> arg0 prev-time-elapsed) (- (the-as time-frame a1-0) (-> arg0 start-time))) ) - (the-as uint 0) + 0 + (none) ) ;; definition for function stopwatch-begin @@ -119,7 +120,7 @@ ) ;; definition for function stopwatch-end -;; INFO: Return type mismatch int vs uint. +;; INFO: Return type mismatch int vs none. ;; WARN: Unsupported inline assembly instruction kind - [mfc0 a1, Count] (defun stopwatch-end ((arg0 stopwatch)) (local-vars (a1-0 int)) @@ -129,11 +130,11 @@ (.mfc0 a1-0 Count) (+! (-> arg0 prev-time-elapsed) (- (the-as time-frame a1-0) (-> arg0 start-time))) ) - (the-as uint 0) + 0 + (none) ) ;; definition for function stopwatch-elapsed-ticks -;; INFO: Return type mismatch time-frame vs uint. ;; WARN: Unsupported inline assembly instruction kind - [mfc0 v1, Count] (defun stopwatch-elapsed-ticks ((arg0 stopwatch)) (local-vars (v1-3 int)) @@ -143,7 +144,7 @@ (.mfc0 v1-3 Count) (+! v0-0 (- (the-as time-frame v1-3) (-> arg0 start-time))) ) - (the-as uint v0-0) + v0-0 ) ) diff --git a/test/decompiler/reference/engine/sparticle/sparticle-launcher-h_REF.gc b/test/decompiler/reference/engine/sparticle/sparticle-launcher-h_REF.gc index eb6e74cbf8..562fec8e98 100644 --- a/test/decompiler/reference/engine/sparticle/sparticle-launcher-h_REF.gc +++ b/test/decompiler/reference/engine/sparticle/sparticle-launcher-h_REF.gc @@ -53,6 +53,7 @@ ) ;; definition for method 3 of type sparticle-launcher +;; INFO: this function exists in multiple non-identical object files (defmethod inspect sparticle-launcher ((obj sparticle-launcher)) (format #t "[~8x] ~A~%" obj (-> obj type)) (format #t "~Tbirthaccum: ~f~%" (-> obj birthaccum)) @@ -212,7 +213,3 @@ ;; failed to figure out what this is: 0 - - - - diff --git a/test/decompiler/reference/engine/target/sidekick_REF.gc b/test/decompiler/reference/engine/target/sidekick_REF.gc index d7cc57ec81..31177339ea 100644 --- a/test/decompiler/reference/engine/target/sidekick_REF.gc +++ b/test/decompiler/reference/engine/target/sidekick_REF.gc @@ -207,7 +207,7 @@ (merc-blend-shape self) ) (if (logtest? (-> self skel status) 384) - (merc-eye-anim self) + (merc-eye-anim (the-as manipy self)) ) (none) ) diff --git a/vendor.yaml b/vendor.yaml index 48935e61b7..d6324d0930 100644 --- a/vendor.yaml +++ b/vendor.yaml @@ -6,5 +6,5 @@ third-party/zydis: sha: 562a7c1e5f2c5017ea882ad0aa3360c465a3eb8f third-party/discord-rpc: sha: 963aa9f3e5ce81a4682c6ca3d136cddda614db33 -third-party/fng: +third-party/fpng: sha: bfe5f9c69e93b99b31268c10db8e645c9125a07f