mirror of
https://github.com/open-goal/jak-project
synced 2026-08-02 16:46:26 -04:00
[decompiler] Detect vector*! (#3846)
Detect use of `vector*!`, which is inlined in jak 2 and jak 3. --------- Co-authored-by: water111 <awaterford1111445@gmail.com>
This commit is contained in:
+44
-61
@@ -159,75 +159,58 @@
|
||||
:code sleep-code
|
||||
:post (behavior ()
|
||||
(local-vars (sv-112 vector) (sv-128 vector) (sv-144 lightning-control))
|
||||
(rlet ((vf0 :class vf)
|
||||
(vf4 :class vf)
|
||||
(vf5 :class vf)
|
||||
(vf6 :class vf)
|
||||
)
|
||||
(init-vf0-vector)
|
||||
(let ((v1-0 (-> self root))
|
||||
(f30-0 4369.067)
|
||||
(f28-0 (* (-> self rotate-speed) (seconds-per-frame)))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> gp-0 x) 1.0)
|
||||
(set! (-> gp-0 y) 1.0)
|
||||
(set! (-> gp-0 z) 0.4)
|
||||
(set! (-> gp-0 w) 1.0)
|
||||
(quaternion-rotate-local-z! (-> v1-0 quat) (-> v1-0 quat) f28-0)
|
||||
(dotimes (s5-0 3)
|
||||
(let ((s4-0 (-> self poles s5-0)))
|
||||
(dotimes (s3-0 6)
|
||||
(let ((s2-0 (new 'stack-no-clear 'vector))
|
||||
(s0-0 (-> s4-0 rings s3-0))
|
||||
(s1-0 (quaternion-rotate-local-z!
|
||||
(new 'stack-no-clear 'quaternion)
|
||||
(-> self root quat)
|
||||
(+ (-> s4-0 z-rotate) (/ f28-0 5))
|
||||
)
|
||||
(let ((v1-0 (-> self root))
|
||||
(f30-0 4369.067)
|
||||
(f28-0 (* (-> self rotate-speed) (seconds-per-frame)))
|
||||
(gp-0 (new 'stack-no-clear 'vector))
|
||||
)
|
||||
(set! (-> gp-0 x) 1.0)
|
||||
(set! (-> gp-0 y) 1.0)
|
||||
(set! (-> gp-0 z) 0.4)
|
||||
(set! (-> gp-0 w) 1.0)
|
||||
(quaternion-rotate-local-z! (-> v1-0 quat) (-> v1-0 quat) f28-0)
|
||||
(dotimes (s5-0 3)
|
||||
(let ((s4-0 (-> self poles s5-0)))
|
||||
(dotimes (s3-0 6)
|
||||
(let ((s2-0 (new 'stack-no-clear 'vector))
|
||||
(s0-0 (-> s4-0 rings s3-0))
|
||||
(s1-0 (quaternion-rotate-local-z!
|
||||
(new 'stack-no-clear 'quaternion)
|
||||
(-> self root quat)
|
||||
(+ (-> s4-0 z-rotate) (/ f28-0 5))
|
||||
)
|
||||
)
|
||||
(set-vector! s2-0 0.0 (-> s0-0 dist) 0.0 1.0)
|
||||
(vector-orient-by-quat! s2-0 s2-0 s1-0)
|
||||
(vector+! s2-0 s2-0 (-> self root trans))
|
||||
(set! sv-112 (new 'stack-no-clear 'vector))
|
||||
(set! sv-128 (new 'stack-no-clear 'vector))
|
||||
(set! sv-144 (-> s0-0 lightning))
|
||||
(set-vector! sv-112 (-> s0-0 radius) 0.0 0.0 0.0)
|
||||
(quaternion-rotate-local-z! s1-0 s1-0 (-> s0-0 local-z-rotate))
|
||||
(dotimes (s0-1 16)
|
||||
(vector-orient-by-quat! sv-128 sv-112 s1-0)
|
||||
(let ((a1-7 sv-128))
|
||||
(let ((v1-14 sv-128)
|
||||
(a0-14 gp-0)
|
||||
)
|
||||
(.lvf vf4 (&-> v1-14 quad))
|
||||
(.lvf vf5 (&-> a0-14 quad))
|
||||
)
|
||||
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
|
||||
(.mul.vf vf6 vf4 vf5 :mask #b111)
|
||||
(.svf (&-> a1-7 quad) vf6)
|
||||
)
|
||||
(set-point! sv-144 s0-1 (vector+! (new 'stack-no-clear 'vector) s2-0 sv-128))
|
||||
(quaternion-rotate-local-y! s1-0 s1-0 f30-0)
|
||||
)
|
||||
)
|
||||
(set-vector! s2-0 0.0 (-> s0-0 dist) 0.0 1.0)
|
||||
(vector-orient-by-quat! s2-0 s2-0 s1-0)
|
||||
(vector+! s2-0 s2-0 (-> self root trans))
|
||||
(set! sv-112 (new 'stack-no-clear 'vector))
|
||||
(set! sv-128 (new 'stack-no-clear 'vector))
|
||||
(set! sv-144 (-> s0-0 lightning))
|
||||
(set-vector! sv-112 (-> s0-0 radius) 0.0 0.0 0.0)
|
||||
(quaternion-rotate-local-z! s1-0 s1-0 (-> s0-0 local-z-rotate))
|
||||
(dotimes (s0-1 16)
|
||||
(vector-orient-by-quat! sv-128 sv-112 s1-0)
|
||||
(vector*! sv-128 sv-128 gp-0)
|
||||
(set-point! sv-144 s0-1 (vector+! (new 'stack-no-clear 'vector) s2-0 sv-128))
|
||||
(quaternion-rotate-local-y! s1-0 s1-0 f30-0)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(when (time-elapsed? (-> self state-time) (-> self sound-timer))
|
||||
(sound-play "cab-fan-blade")
|
||||
(sound-stop (-> self sound-id))
|
||||
(sound-play "pal-fan-buzz" :id (-> self sound-id))
|
||||
(set! (-> self sound-timer)
|
||||
(the-as time-frame (the int (* 300.0 (/ 21845.334 (fabs (-> self rotate-speed))))))
|
||||
)
|
||||
(set-time! (-> self state-time))
|
||||
)
|
||||
(update! (-> self sound))
|
||||
(rider-post)
|
||||
)
|
||||
(when (time-elapsed? (-> self state-time) (-> self sound-timer))
|
||||
(sound-play "cab-fan-blade")
|
||||
(sound-stop (-> self sound-id))
|
||||
(sound-play "pal-fan-buzz" :id (-> self sound-id))
|
||||
(set! (-> self sound-timer)
|
||||
(the-as time-frame (the int (* 300.0 (/ 21845.334 (fabs (-> self rotate-speed))))))
|
||||
)
|
||||
(set-time! (-> self state-time))
|
||||
)
|
||||
(update! (-> self sound))
|
||||
(rider-post)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user