[decompiler] detect seek! and seekl! macros (#1317)

* detect `seek!` and `seekl!`

* fancy struct instead of pair mess

* fixes

* i think this was wrong?

* update refs

* update source

* More logical branching

* even better branching
This commit is contained in:
ManDude
2022-04-18 20:01:44 +01:00
committed by GitHub
parent cbc6987351
commit 66e395d547
109 changed files with 952 additions and 1398 deletions
+5 -15
View File
@@ -1175,9 +1175,7 @@
)
(until (ja-done? 0)
(set! (-> self racer stick-lock) #t)
(set! (-> self control unknown-vector11 y)
(seek (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (-> *display* seconds-per-frame)))
(send-event *camera* 'joystick 0.0 1.0)
(suspend)
(let ((gp-3 (-> self skel root-channel 0)))
@@ -1200,9 +1198,7 @@
(until (ja-done? 0)
(set! (-> self racer stick-lock) #t)
(send-event *camera* 'joystick 0.0 1.0)
(set! (-> self control unknown-vector11 y)
(seek (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (-> *display* seconds-per-frame)))
(if (>= (ja-aframe-num 0) 245.0)
(set-forward-vel (* 0.5 (-> self control unknown-float01)))
)
@@ -1558,9 +1554,7 @@
(set! (-> self racer turn-anim-targ) 0.0)
(set! (-> self racer turn-anim-targ) 0.0)
(target-racing-turn-anim)
(set! (-> self control unknown-vector11 y)
(seek (-> self control unknown-vector11 y) 6144.0 (* 3.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self control unknown-vector11 y) 6144.0 (* 3.0 (-> *display* seconds-per-frame)))
(suspend)
)
)
@@ -1650,9 +1644,7 @@
)
)
)
(set! (-> self racer front-rotv)
(seek (-> self racer front-rotv) f0-5 (* 54613.332 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer front-rotv) f0-5 (* 54613.332 (-> *display* seconds-per-frame)))
)
(set! (-> self racer front-rot)
(the float
@@ -1888,9 +1880,7 @@
:post
(behavior ()
(racer-sounds)
(set! (-> self racer heat)
(seek (-> self racer heat) 0.0 (* (-> *RACER-bank* surface-heat-inc) (-> *display* seconds-per-frame)))
)
(seek! (-> self racer heat) 0.0 (* (-> *RACER-bank* surface-heat-inc) (-> *display* seconds-per-frame)))
(vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12))
(quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat))
(set! (-> self racer bike-scale quad) (-> self control scale quad))
+105 -145
View File
@@ -154,7 +154,7 @@
)
)
)
(set! (-> self racer slide-amp) (seek (-> self racer slide-amp) 0.0 (* 0.3 (-> *display* seconds-per-frame))))
(seek! (-> self racer slide-amp) 0.0 (* 0.3 (-> *display* seconds-per-frame)))
(if (= (-> self racer slide-amp) 0.0)
(set! (-> self racer slide-mode) -1)
)
@@ -164,7 +164,7 @@
(defbehavior racer-xz target ((arg0 float) (arg1 float))
(set! (-> self racer slide-shift-x) arg1)
(set! (-> self racer slide-interp) (seek (-> self racer slide-interp) 0.0 (-> *display* seconds-per-frame)))
(seek! (-> self racer slide-interp) 0.0 (-> *display* seconds-per-frame))
(let ((f30-1
(if (or (< (* arg1 arg0) 0.0) (not (racer-on-ground?)))
1.0
@@ -178,9 +178,7 @@
(lerp-scale 91022.22 236657.78 (-> self control unknown-float01) 0.0 (* 0.125 (-> self racer transv-max)))
)
)
(set! (-> self racer rotv y)
(seek (-> self racer rotv y) (* arg0 f30-1 (- f28-1)) (* f0-18 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer rotv y) (* arg0 f30-1 (- f28-1)) (* f0-18 (-> *display* seconds-per-frame)))
)
(set! (-> self racer rotv y)
(* (-> self racer rotv y)
@@ -195,9 +193,7 @@
(set! (-> self racer slide-grip-mult) 1.0)
)
(s5-1
(set! (-> self racer slide-grip-mult)
(seek (-> self racer slide-grip-mult) 1.0 (-> *display* seconds-per-frame))
)
(seek! (-> self racer slide-grip-mult) 1.0 (-> *display* seconds-per-frame))
)
)
(let ((f30-4 (* (deg-diff f30-3 0.0) (-> self racer slide-grip-mult))))
@@ -282,13 +278,11 @@
(+! (-> self control unknown-vector00 z) (* f1-4 (-> *display* seconds-per-frame)))
)
)
(set! (-> self racer front-rotv)
(seek
(-> self racer front-rotv)
(+ 65536.0 (* 364088.88 (+ f0-0 (* 0.1 arg1))))
(* 364088.88 (-> *display* seconds-per-frame))
)
)
(seek!
(-> self racer front-rotv)
(+ 65536.0 (* 364088.88 (+ f0-0 (* 0.1 arg1))))
(* 364088.88 (-> *display* seconds-per-frame))
)
)
(set! (-> self racer front-rot)
(the float
@@ -354,13 +348,11 @@
(defbehavior racer-cushion target ((arg0 float))
(let ((f30-0 (-> self racer bob-period)))
(let ((f28-0 1.0))
(set! (-> self racer bob-meta-timer)
(seek
(-> self racer bob-meta-timer)
(-> self racer bob-meta-meta-timer)
(* 4.0 (-> *display* seconds-per-frame))
)
)
(seek!
(-> self racer bob-meta-timer)
(-> self racer bob-meta-meta-timer)
(* 4.0 (-> *display* seconds-per-frame))
)
(let* ((f0-8 (sin (/ (* 65536.0 (-> self racer bob-timer)) f30-0)))
(f0-9 (* 1228.8 (-> self racer bob-mult-trans) f28-0 f0-8))
)
@@ -403,9 +395,7 @@
(set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) 0.0 0.05))
)
)
(set! (-> self racer hill-boost)
(seek (-> self racer hill-boost) 0.0 (* 81920.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer hill-boost) 0.0 (* 81920.0 (-> *display* seconds-per-frame)))
(set! (-> self racer hill-offset) 0.0)
0
(none)
@@ -549,13 +539,11 @@
)
)
)
(set! (-> self control unknown-float80)
(seek
(-> self control unknown-float80)
f0-2
(* (-> self control unknown-float82) (-> *display* seconds-per-frame))
)
)
(seek!
(-> self control unknown-float80)
f0-2
(* (-> self control unknown-float82) (-> *display* seconds-per-frame))
)
)
(vector-deg-slerp
(-> self control dynam gravity-normal)
@@ -580,11 +568,10 @@
100.0
(let ((f0-6
(+ (* 2.0 f0-1)
(if (< 4096.0
(vector-dot
(-> self control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))
)
(if (< 4096.0 (vector-dot
(-> self control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))
)
)
0.7
0.0
@@ -596,9 +583,7 @@
(if (< 2.5 f0-6)
(set! f0-6 2.5)
)
(set! (-> self racer engine-sound-pitch)
(seek (-> self racer engine-sound-pitch) f0-6 (* 4.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer engine-sound-pitch) f0-6 (* 4.0 (-> *display* seconds-per-frame)))
)
)
(let ((f0-11 (lerp-scale 100.0 60.0 (-> self racer engine-sound-pitch) 0.8 2.0)))
@@ -708,73 +693,72 @@
(let* ((gp-4 #f)
(s5-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10)))
(v1-61 (-> self control ground-pat material))
(a1-13
(cond
((= v1-61 (pat-material waterbottom))
(when (and (logtest? (-> self draw status) (draw-status was-drawn)) (zero? (-> self draw cur-lod)))
(let ((f1-3 (y-angle (-> self control)))
(f0-17 (-> self control unknown-float01))
(s4-2 s5-2)
)
(set! (-> s4-2 y) (-> self water height))
(set! (-> *part-id-table* 2275 init-specs 4 initial-valuef) (+ 24576.0 f1-3))
(set! (-> *part-id-table* 2275 init-specs 19 initial-valuef) (+ 49152.0 f1-3))
(set! (-> *part-id-table* 2275 init-specs 1 initial-valuef) (* 0.0000036621095 f0-17))
(set! (-> *part-id-table* 2275 init-specs 2 initial-valuef) (* 0.1 f0-17))
(sp-launch-particles-var
*sp-particle-system-3d*
(-> *part-id-table* 2275)
s4-2
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
(sp-launch-particles-var
*sp-particle-system-3d*
(-> *part-id-table* 2276)
s4-2
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
(a1-13 (cond
((= v1-61 (pat-material waterbottom))
(when (and (logtest? (-> self draw status) (draw-status was-drawn)) (zero? (-> self draw cur-lod)))
(let ((f1-3 (y-angle (-> self control)))
(f0-17 (-> self control unknown-float01))
(s4-2 s5-2)
)
(set! (-> s4-2 y) (-> self water height))
(set! (-> *part-id-table* 2275 init-specs 4 initial-valuef) (+ 24576.0 f1-3))
(set! (-> *part-id-table* 2275 init-specs 19 initial-valuef) (+ 49152.0 f1-3))
(set! (-> *part-id-table* 2275 init-specs 1 initial-valuef) (* 0.0000036621095 f0-17))
(set! (-> *part-id-table* 2275 init-specs 2 initial-valuef) (* 0.1 f0-17))
(sp-launch-particles-var
*sp-particle-system-3d*
(-> *part-id-table* 2275)
s4-2
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
(sp-launch-particles-var
*sp-particle-system-3d*
(-> *part-id-table* 2276)
s4-2
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
(-> *part-id-table* 2208)
)
((= v1-61 (pat-material lava))
(-> *part-id-table* 2213)
)
((= v1-61 (pat-material hotcoals))
(-> *part-id-table* 2214)
)
((or (= v1-61 (pat-material pcmetal))
(= v1-61 (pat-material metal))
(= v1-61 (pat-material tube))
(= v1-61 (pat-material rotate))
)
(-> *part-id-table* 2215)
)
((= v1-61 (pat-material grass))
(-> *part-id-table* 2207)
)
((or (= v1-61 (pat-material dirt))
(= v1-61 (pat-material sand))
(= v1-61 (pat-material straw))
(= v1-61 (pat-material gravel))
)
(-> *part-id-table* 2216)
)
((or (= v1-61 (pat-material wood)) (= v1-61 (pat-material crwood)))
(-> *part-id-table* 2217)
)
((= v1-61 (pat-material stone))
(-> *part-id-table* 2831)
)
(else
(-> *part-id-table* 2211)
)
)
)
(-> *part-id-table* 2208)
)
((= v1-61 (pat-material lava))
(-> *part-id-table* 2213)
)
((= v1-61 (pat-material hotcoals))
(-> *part-id-table* 2214)
)
((or (= v1-61 (pat-material pcmetal))
(= v1-61 (pat-material metal))
(= v1-61 (pat-material tube))
(= v1-61 (pat-material rotate))
)
(-> *part-id-table* 2215)
)
((= v1-61 (pat-material grass))
(-> *part-id-table* 2207)
)
((or (= v1-61 (pat-material dirt))
(= v1-61 (pat-material sand))
(= v1-61 (pat-material straw))
(= v1-61 (pat-material gravel))
)
(-> *part-id-table* 2216)
)
((or (= v1-61 (pat-material wood)) (= v1-61 (pat-material crwood)))
(-> *part-id-table* 2217)
)
((= v1-61 (pat-material stone))
(-> *part-id-table* 2831)
)
(else
(-> *part-id-table* 2211)
)
)
)
)
(set! (-> s5-2 y) (-> self control shadow-pos y))
(if (nonzero? a1-13)
@@ -886,30 +870,24 @@
)
(case (-> self control poly-pat material)
(((pat-material hotcoals))
(set! (-> self racer heat)
(seek (-> self racer heat) (-> *RACER-bank* heat-max) (* f22-1 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f22-1 (-> *display* seconds-per-frame)))
)
(((pat-material lava))
(if (racer-on-ground?)
(set! (-> self racer heat)
(seek (-> self racer heat) (-> *RACER-bank* heat-max) (* f24-1 (-> *display* seconds-per-frame)))
)
(set! (-> self racer heat)
(seek (-> self racer heat) (-> *RACER-bank* heat-max) (* f28-2 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f24-1 (-> *display* seconds-per-frame)))
(seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f28-2 (-> *display* seconds-per-frame)))
)
)
(else
(if (not (racer-on-ground?))
(set! (-> self racer heat) (seek (-> self racer heat) 0.0 (* f26-0 (-> *display* seconds-per-frame))))
(seek! (-> self racer heat) 0.0 (* f26-0 (-> *display* seconds-per-frame)))
)
)
)
)
(let ((v1-189 (- (-> *display* base-frame-counter) (-> self control unknown-dword11))))
(if (and (>= v1-189 (seconds 0.9)) (>= (seconds 3) v1-189))
(set! (-> self racer heat) (seek (-> self racer heat) 0.0 (* f30-2 (-> *display* seconds-per-frame))))
(seek! (-> self racer heat) 0.0 (* f30-2 (-> *display* seconds-per-frame)))
)
)
)
@@ -961,9 +939,7 @@
(set! (-> self racer boost-level) 0.0)
)
(set! (-> self racer boost-target) (+ (-> self racer boost-curve) (-> self racer boost-level)))
(set! (-> self racer boost-output)
(seek (-> self racer boost-output) (-> self racer boost-target) (* 40960.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer boost-output) (-> self racer boost-target) (* 40960.0 (-> *display* seconds-per-frame)))
(when (!= (-> self racer boost-output) 0.0)
(dotimes (gp-7 8)
(let ((v1-258 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
@@ -1463,10 +1439,8 @@
)
(cond
((racer-on-ground?)
(set! (-> self control unknown-float81)
(seek (-> self control unknown-float81) 1.0 (* 8.0 (-> *display* seconds-per-frame)))
)
(set! (-> self racer mult-rotx) (seek (-> self racer mult-rotx) 0.0 (* 2.0 (-> *display* seconds-per-frame))))
(seek! (-> self control unknown-float81) 1.0 (* 8.0 (-> *display* seconds-per-frame)))
(seek! (-> self racer mult-rotx) 0.0 (* 2.0 (-> *display* seconds-per-frame)))
(set! (-> self racer targ-rotx) 0.0)
(set! (-> self racer hill-rotx) 0.0)
(set! (-> self racer speed-rotx) 0.25)
@@ -1479,9 +1453,9 @@
(when (!= (the int (/ f0-52 (* 0.5 (-> self racer bob-period))))
(the int (/ (-> self racer bob-timer) (* 0.5 (-> self racer bob-period))))
)
(set! (-> self racer bob-mult-trans) (seek (-> self racer bob-mult-trans) 1.0 0.75))
(seek! (-> self racer bob-mult-trans) 1.0 0.75)
(if (< 1.5 (-> self racer bob-meta-meta-timer))
(set! (-> self racer bob-meta-meta-timer) (seek (-> self racer bob-meta-meta-timer) 1.0 0.5))
(seek! (-> self racer bob-meta-meta-timer) 1.0 0.5)
)
(when (>= (- (-> *display* base-frame-counter) (-> self racer bob-meta-time)) (seconds 2.2))
(set! (-> self racer bob-meta-time) (-> *display* base-frame-counter))
@@ -1490,9 +1464,7 @@
)
)
(let ((f0-63 (lerp-scale -1.0 -0.33 (-> self control unknown-float01) 0.0 (-> self racer transv-max))))
(set! (-> self racer bob-mult-rot)
(seek (-> self racer bob-mult-rot) f0-63 (* 8.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer bob-mult-rot) f0-63 (* 8.0 (-> *display* seconds-per-frame)))
)
(if (< 0.0 f30-1)
(set! f30-1 0.0)
@@ -1500,12 +1472,8 @@
(set! (-> self racer stick-lock) #f)
)
(else
(set! (-> self control unknown-float81)
(seek (-> self control unknown-float81) 0.0 (* 2.0 (-> *display* seconds-per-frame)))
)
(set! (-> self racer mult-rotx)
(seek (-> self racer mult-rotx) 1.0 (* 16.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self control unknown-float81) 0.0 (* 2.0 (-> *display* seconds-per-frame)))
(seek! (-> self racer mult-rotx) 1.0 (* 16.0 (-> *display* seconds-per-frame)))
(let ((f0-77 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))))
(vector-! (new 'stack-no-clear 'vector) (-> self control trans) (the-as vector (-> self control trans-old)))
(let* ((v1-128 (-> self racer bounce))
@@ -1540,9 +1508,7 @@
)
(set! (-> self racer speed-rotx) 0.5)
(when (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (seconds 0.1))
(set! (-> self racer hill-rotx)
(seek (-> self racer hill-rotx) 0.0 (* 65536.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer hill-rotx) 0.0 (* 65536.0 (-> *display* seconds-per-frame)))
(set! (-> self racer speed-rotx) 0.6)
)
)
@@ -1550,9 +1516,7 @@
(set! (-> self racer speed-rotx) 0.25)
)
)
(set! (-> self racer mult-rotx)
(seek (-> self racer mult-rotx) 1.0 (* 64.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer mult-rotx) 1.0 (* 64.0 (-> *display* seconds-per-frame)))
)
(else
(set! (-> self racer speed-rotx) 0.025)
@@ -1564,12 +1528,8 @@
)
(set! (-> self racer bob-timer) (- f0-91 (* (the float (the int (/ f0-91 f1-44))) f1-44)))
)
(set! (-> self racer bob-mult-rot)
(seek (-> self racer bob-mult-rot) 0.0 (* 16.0 (-> *display* seconds-per-frame)))
)
(set! (-> self racer bob-mult-trans)
(seek (-> self racer bob-mult-trans) 0.0 (* 16.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self racer bob-mult-rot) 0.0 (* 16.0 (-> *display* seconds-per-frame)))
(seek! (-> self racer bob-mult-trans) 0.0 (* 16.0 (-> *display* seconds-per-frame)))
(set! f30-1
(lerp-scale
f30-1