[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 -5
View File
@@ -294,8 +294,8 @@
(case item
(('life)
(if (>= amount 0.0)
(set! (-> obj life) (seek (-> obj life) (-> obj life-max) amount))
(set! (-> obj life) (seek (-> obj life) 0.0 (- amount)))
(seek! (-> obj life) (-> obj life-max) amount)
(seek! (-> obj life) 0.0 (- amount))
)
(-> obj life)
)
@@ -466,10 +466,10 @@
)
)
(set! (-> obj health-pickup-time) (-> *display* base-frame-counter))
(set! (-> obj health) (seek (-> obj health) (-> obj health-max) amount))
(seek! (-> obj health) (-> obj health-max) amount)
)
(else
(set! (-> obj health) (seek (-> obj health) 0.0 (- amount)))
(seek! (-> obj health) 0.0 (- amount))
(if (>= amount -10.0)
(pickup-collectable! obj (pickup-type eco-pill) 0.0 source-handle)
)
@@ -491,7 +491,7 @@
(((pickup-type eco-pill))
(when (>= amount 0.0)
(set! (-> obj eco-pill-pickup-time) (-> *display* base-frame-counter))
(set! (-> obj eco-pill) (seek (-> obj eco-pill) (-> obj eco-pill-max) amount))
(seek! (-> obj eco-pill) (-> obj eco-pill-max) amount)
(when (and (>= (-> obj eco-pill) (-> *FACT-bank* eco-pill-max-default)) (< (-> obj health) (-> obj health-max)))
(set! (-> obj eco-pill) (- (-> obj eco-pill) (-> *FACT-bank* eco-pill-max-default)))
(pickup-collectable!
+1 -1
View File
@@ -1645,7 +1645,7 @@ auto-save-post
(else
(case (-> self mode)
(('auto-save)
(set! (-> *game-info* auto-save-count) (seekl (-> *game-info* auto-save-count) 0 1))
(seekl! (-> *game-info* auto-save-count) 0 1)
)
)
(go-virtual error (-> self result))
+1 -3
View File
@@ -650,9 +650,7 @@
)
(set! f0-8 (* 0.75 f0-8))
)
(set! (-> self control unknown-float141)
(seek (-> self control unknown-float141) f0-8 (* 100.0 (-> *display* seconds-per-frame)))
)
(seek! (-> self control unknown-float141) f0-8 (* 100.0 (-> *display* seconds-per-frame)))
)
(let ((f30-0 (-> self control unknown-float141))
(f0-13 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 81920.0))
+3 -3
View File
@@ -739,14 +739,14 @@
(dummy-28 self)
((-> self update-velocity) self)
(when (logtest? (-> self options) 2)
(set! (-> self tween) (seek (-> self tween) 1.0 (* 0.5 (-> *display* seconds-per-frame))))
(seek! (-> self tween) 1.0 (* 0.5 (-> *display* seconds-per-frame)))
(let ((f0-6 (vector-vector-distance (-> self root-override trans) (-> self target))))
(cond
((< f0-6 20480.0)
(set! (-> self tween) (seek (-> self tween) 1.0 (* 3.0 (-> *display* seconds-per-frame))))
(seek! (-> self tween) 1.0 (* 3.0 (-> *display* seconds-per-frame)))
)
((< f0-6 40960.0)
(set! (-> self tween) (seek (-> self tween) 1.0 (-> *display* seconds-per-frame)))
(seek! (-> self tween) 1.0 (-> *display* seconds-per-frame))
)
)
)
+5 -15
View File
@@ -269,27 +269,19 @@
(let ((s5-1 (-> obj target)))
(when *sound-player-enable*
(when (!= (-> gp-0 sfx-volume) (-> s5-1 sfx-volume))
(set! (-> gp-0 sfx-volume)
(seek (-> gp-0 sfx-volume) (-> s5-1 sfx-volume) (* 100.0 (-> *display* seconds-per-frame)))
)
(seek! (-> gp-0 sfx-volume) (-> s5-1 sfx-volume) (* 100.0 (-> *display* seconds-per-frame)))
(sound-set-volume (the-as uint 1) (-> gp-0 sfx-volume))
)
(when (!= (-> gp-0 music-volume) (-> s5-1 music-volume))
(set! (-> gp-0 music-volume)
(seek (-> gp-0 music-volume) (-> s5-1 music-volume) (* 100.0 (-> *display* seconds-per-frame)))
)
(seek! (-> gp-0 music-volume) (-> s5-1 music-volume) (* 100.0 (-> *display* seconds-per-frame)))
(sound-set-volume (the-as uint 2) (-> gp-0 music-volume))
)
(when (!= (-> gp-0 dialog-volume) (-> s5-1 dialog-volume))
(set! (-> gp-0 dialog-volume)
(seek (-> gp-0 dialog-volume) (-> s5-1 dialog-volume) (* 100.0 (-> *display* seconds-per-frame)))
)
(seek! (-> gp-0 dialog-volume) (-> s5-1 dialog-volume) (* 100.0 (-> *display* seconds-per-frame)))
(sound-set-volume (the-as uint 4) (-> gp-0 dialog-volume))
)
(when (!= (-> gp-0 ambient-volume) (-> s5-1 ambient-volume))
(set! (-> gp-0 ambient-volume)
(seek (-> gp-0 ambient-volume) (-> s5-1 ambient-volume) (* 100.0 (-> *display* seconds-per-frame)))
)
(seek! (-> gp-0 ambient-volume) (-> s5-1 ambient-volume) (* 100.0 (-> *display* seconds-per-frame)))
(sound-set-volume (the-as uint 16) (-> gp-0 ambient-volume))
)
)
@@ -342,9 +334,7 @@
(set! (-> gp-0 bg-r) (-> s5-1 bg-r))
(set! (-> gp-0 bg-g) (-> s5-1 bg-g))
(set! (-> gp-0 bg-b) (-> s5-1 bg-b))
(set! (-> gp-0 bg-a)
(seek (-> gp-0 bg-a) (-> s5-1 bg-a) (* (-> s5-1 bg-a-speed) (-> *display* seconds-per-frame)))
)
(seek! (-> gp-0 bg-a) (-> s5-1 bg-a) (* (-> s5-1 bg-a-speed) (-> *display* seconds-per-frame)))
)
(let ((v1-60 (-> *display* frames (-> *display* on-screen) display))
(f0-39 (-> gp-0 bg-a))
+2 -4
View File
@@ -329,9 +329,7 @@
(defun increment-success-for-hint ((arg0 game-text-id))
(let ((gp-0 (find-hint-control-index arg0)))
(when (>= gp-0 0)
(set! (-> *game-info* hint-control gp-0 num-success)
(seekl (-> *game-info* hint-control gp-0 num-success) 127 1)
)
(seekl! (-> *game-info* hint-control gp-0 num-success) 127 1)
0
)
)
@@ -398,7 +396,7 @@
)
(cond
(v1-21
(set! (-> gp-1 num-attempts) (seekl (-> gp-1 num-attempts) 127 1))
(seekl! (-> gp-1 num-attempts) 127 1)
(and (>= (-> gp-1 num-attempts) (-> gp-1 num-attempts-before-playing))
(or (= (-> gp-1 num-success-before-killing) -1)
(< (-> gp-1 num-success) (-> gp-1 num-success-before-killing))
+2 -2
View File
@@ -104,8 +104,8 @@
)
)
(if (< 0.0 f0-8)
(set! (-> self twist) (seek (-> self twist) -0.4 (* 0.3 (-> *display* seconds-per-frame))))
(set! (-> self twist) (seek (-> self twist) 0.4 (* 0.3 (-> *display* seconds-per-frame))))
(seek! (-> self twist) -0.4 (* 0.3 (-> *display* seconds-per-frame)))
(seek! (-> self twist) 0.4 (* 0.3 (-> *display* seconds-per-frame)))
)
)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))