mirror of
https://github.com/open-goal/jak-project
synced 2026-07-01 04:10:32 -04:00
[decompiler] Several small fixes (#775)
* fix assorted bugs * stricter return types * only look for functions in code files
This commit is contained in:
@@ -557,7 +557,7 @@
|
||||
(when
|
||||
(and
|
||||
(< 8192.0 f28-1)
|
||||
(nonzero? (logand (-> *camera* master-options) 2))
|
||||
(logtest? (-> *camera* master-options) 2)
|
||||
)
|
||||
(vector-!
|
||||
(the-as vector (-> s1-0 vector))
|
||||
|
||||
@@ -166,13 +166,13 @@
|
||||
(let ((v1-32 #f))
|
||||
(set! a0-16 #f)
|
||||
(when s4-0
|
||||
(set! v1-32 (nonzero? (logand (shl #x8000 16) (-> s4-0 flags))))
|
||||
(set! v1-32 (logtest? (shl #x8000 16) (-> s4-0 flags)))
|
||||
(if (< (-> s4-0 length) (-> s4-0 from-bsp current-leaf-idx))
|
||||
(set! v1-32 #f)
|
||||
)
|
||||
)
|
||||
(when s3-0
|
||||
(set! a0-16 (nonzero? (logand (shl #x8000 16) (-> s3-0 flags))))
|
||||
(set! a0-16 (logtest? (shl #x8000 16) (-> s3-0 flags)))
|
||||
(if (< (-> s3-0 length) (-> s3-0 from-bsp current-leaf-idx))
|
||||
(set! a0-16 #f)
|
||||
)
|
||||
|
||||
+1
-1
@@ -1686,7 +1686,7 @@
|
||||
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons right))
|
||||
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons left))
|
||||
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons down))
|
||||
(nonzero? (logand (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons up)))
|
||||
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons up))
|
||||
)
|
||||
(let ((v1-39 (cond
|
||||
((logtest?
|
||||
|
||||
@@ -46,19 +46,19 @@
|
||||
|
||||
;; definition for method 12 of type task-cstage
|
||||
(defmethod closed? task-cstage ((obj task-cstage))
|
||||
(nonzero? (logand (-> obj flags) (task-flags closed)))
|
||||
(logtest? (-> obj flags) (task-flags closed))
|
||||
)
|
||||
|
||||
;; definition for method 13 of type task-cstage
|
||||
(defmethod closed-by-default? task-cstage ((obj task-cstage))
|
||||
(nonzero? (logand (-> obj flags) (task-flags closed-by-default)))
|
||||
(logtest? (-> obj flags) (task-flags closed-by-default))
|
||||
)
|
||||
|
||||
;; definition for method 11 of type task-cstage
|
||||
(defmethod task-available? task-cstage ((obj task-cstage) (arg0 task-control))
|
||||
(let ((a0-1 obj))
|
||||
(cond
|
||||
((nonzero? (logand (-> a0-1 flags) (task-flags closed)))
|
||||
((logtest? (-> a0-1 flags) (task-flags closed))
|
||||
#f
|
||||
)
|
||||
((>=
|
||||
@@ -227,11 +227,9 @@
|
||||
(dotimes (s4-0 (-> obj stage length))
|
||||
(if (or (= arg0 'game) (let ((a0-4 (-> obj stage s4-0)))
|
||||
(not
|
||||
(nonzero?
|
||||
(logand
|
||||
(-> a0-4 flags)
|
||||
(task-flags closed-by-default)
|
||||
)
|
||||
(logtest?
|
||||
(-> a0-4 flags)
|
||||
(task-flags closed-by-default)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -239,7 +237,7 @@
|
||||
(open-task! (-> obj stage s4-0))
|
||||
)
|
||||
(let ((a0-10 (-> obj stage s4-0)))
|
||||
(if (nonzero? (logand (-> a0-10 flags) (task-flags closed)))
|
||||
(if (logtest? (-> a0-10 flags) (task-flags closed))
|
||||
(close-task! (-> obj stage s4-0))
|
||||
)
|
||||
)
|
||||
@@ -263,7 +261,7 @@
|
||||
(= arg1 (-> obj stage v1-3 status))
|
||||
)
|
||||
(let ((a0-3 (-> obj stage v1-3)))
|
||||
(return (nonzero? (logand (-> a0-3 flags) (task-flags closed))))
|
||||
(return (logtest? (-> a0-3 flags) (task-flags closed)))
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
+1
-1
@@ -173,5 +173,5 @@
|
||||
|
||||
;; definition for method 11 of type vol-control
|
||||
(defmethod TODO-RENAME-11 vol-control ((obj vol-control))
|
||||
(and *display-vol-marks* (nonzero? (logand (-> obj flags) 1)))
|
||||
(and *display-vol-marks* (logtest? (-> obj flags) 1))
|
||||
)
|
||||
|
||||
@@ -22,11 +22,9 @@
|
||||
(v1-4 (logand a0-4 3))
|
||||
(a0-6 (+ (* a3-0 4) a2-3))
|
||||
)
|
||||
(nonzero?
|
||||
(logand
|
||||
(-> *ocean-work* trans-camera-masks 0 mask (+ a1-2 (* a0-6 8)))
|
||||
(ash 1 v1-4)
|
||||
)
|
||||
(logtest?
|
||||
(-> *ocean-work* trans-camera-masks 0 mask (+ a1-2 (* a0-6 8)))
|
||||
(ash 1 v1-4)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -62,7 +60,7 @@
|
||||
)
|
||||
)
|
||||
(if a0-11
|
||||
(nonzero? (logand (-> a0-11 1) (ash 1 v1-4)))
|
||||
(logtest? (-> a0-11 1) (ash 1 v1-4))
|
||||
#f
|
||||
)
|
||||
)
|
||||
|
||||
+2
-8
@@ -1213,10 +1213,7 @@
|
||||
)
|
||||
(dotimes (upload-chunk-idx chunk-count)
|
||||
(set! current-dest-chunk (+ tex-dest-base-chunk upload-chunk-idx))
|
||||
(set!
|
||||
need-tex
|
||||
(nonzero? (logand allow-cache-mask (ash 1 upload-chunk-idx)))
|
||||
)
|
||||
(set! need-tex (logtest? allow-cache-mask (ash 1 upload-chunk-idx)))
|
||||
(cond
|
||||
((zero? chunks-to-upload-count)
|
||||
(when (and (!= (-> pool ids current-dest-chunk) page-id) need-tex)
|
||||
@@ -1856,10 +1853,7 @@
|
||||
(dotimes (v1-0 32)
|
||||
(let ((a2-0 (-> obj common-page v1-0)))
|
||||
(when
|
||||
(and
|
||||
(nonzero? a2-0)
|
||||
(nonzero? (logand (-> obj common-page-mask) (ash 1 v1-0)))
|
||||
)
|
||||
(and (nonzero? a2-0) (logtest? (-> obj common-page-mask) (ash 1 v1-0)))
|
||||
(upload-vram-pages
|
||||
obj
|
||||
(-> obj segment-common)
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
;; definition for method 14 of type water-control
|
||||
(defmethod display-water-marks? water-control ((obj water-control))
|
||||
(and *display-water-marks* (nonzero? (logand (-> obj flags) 1)))
|
||||
(and *display-water-marks* (logtest? (-> obj flags) 1))
|
||||
)
|
||||
|
||||
;; definition for method 0 of type water-control
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@
|
||||
;; definition for method 9 of type bit-array
|
||||
(defmethod get-bit bit-array ((obj bit-array) (arg0 int))
|
||||
(let ((v1-2 (-> obj bytes (/ arg0 8))))
|
||||
(nonzero? (logand v1-2 (ash 1 (logand arg0 7))))
|
||||
(logtest? v1-2 (ash 1 (logand arg0 7)))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+1
-1
@@ -591,7 +591,7 @@
|
||||
(defmethod should-display? nav-control ((obj nav-control))
|
||||
(and
|
||||
*display-nav-marks*
|
||||
(nonzero? (logand (-> obj flags) (nav-control-flags display-marks bit0)))
|
||||
(logtest? (-> obj flags) (nav-control-flags display-marks))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+1
-1
@@ -135,7 +135,7 @@
|
||||
(defmethod should-display? path-control ((obj path-control))
|
||||
(and
|
||||
*display-path-marks*
|
||||
(nonzero? (logand (-> obj flags) (path-control-flag display)))
|
||||
(logtest? (-> obj flags) (path-control-flag display))
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+2
-2
@@ -34,7 +34,7 @@
|
||||
((let ((a0-5 obj))
|
||||
(and
|
||||
*display-path-marks*
|
||||
(nonzero? (logand (-> a0-5 flags) (path-control-flag display)))
|
||||
(logtest? (-> a0-5 flags) (path-control-flag display))
|
||||
)
|
||||
)
|
||||
(dotimes (s5-1 (-> obj curve num-cverts))
|
||||
@@ -404,7 +404,7 @@
|
||||
((let ((a0-5 obj))
|
||||
(and
|
||||
*display-path-marks*
|
||||
(nonzero? (logand (-> a0-5 flags) (path-control-flag display)))
|
||||
(logtest? (-> a0-5 flags) (path-control-flag display))
|
||||
)
|
||||
)
|
||||
(if
|
||||
|
||||
@@ -1135,7 +1135,6 @@
|
||||
(set! (-> *flava-table* count) 0)
|
||||
|
||||
;; definition for function flava-lookup
|
||||
;; INFO: Return type mismatch int vs integer.
|
||||
(defun flava-lookup ((arg0 symbol) (arg1 int))
|
||||
(dotimes (v1-0 (-> *flava-table* count))
|
||||
(if (= (-> *flava-table* row v1-0 music) arg0)
|
||||
|
||||
+2
-2
@@ -1508,11 +1508,11 @@
|
||||
(when parent
|
||||
(let ((child (-> parent 0 child)))
|
||||
(if (= child proc)
|
||||
(return (the-as (pointer process-tree) #f))
|
||||
(return (the-as object #f))
|
||||
)
|
||||
(while child
|
||||
(if (= (-> child 0 brother) proc)
|
||||
(return child)
|
||||
(return (the-as object child))
|
||||
)
|
||||
(set! child (-> child 0 brother))
|
||||
)
|
||||
|
||||
+1
-1
@@ -65,7 +65,7 @@
|
||||
((and
|
||||
(-> obj draw shadow)
|
||||
(zero? (-> obj draw cur-lod))
|
||||
(nonzero? (logand (-> obj draw status) 8))
|
||||
(logtest? (-> obj draw status) 8)
|
||||
)
|
||||
(let ((v1-9 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
|
||||
|
||||
+1
-1
@@ -62,7 +62,7 @@
|
||||
((and
|
||||
(-> obj draw shadow)
|
||||
(zero? (-> obj draw cur-lod))
|
||||
(nonzero? (logand (-> obj draw status) 8))
|
||||
(logtest? (-> obj draw status) 8)
|
||||
)
|
||||
(let ((v1-9 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
|
||||
|
||||
+1
-1
@@ -80,7 +80,7 @@
|
||||
((and
|
||||
(-> obj draw shadow)
|
||||
(zero? (-> obj draw cur-lod))
|
||||
(nonzero? (logand (-> obj draw status) 8))
|
||||
(logtest? (-> obj draw status) 8)
|
||||
)
|
||||
(let ((v1-9 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
|
||||
|
||||
+19
-29
@@ -131,11 +131,7 @@
|
||||
obj
|
||||
)
|
||||
)
|
||||
(if
|
||||
(and
|
||||
(nonzero? (-> obj neck))
|
||||
(nonzero? (logand (-> obj nav-enemy-flags) #x4000))
|
||||
)
|
||||
(if (and (nonzero? (-> obj neck)) (logtest? (-> obj nav-enemy-flags) #x4000))
|
||||
(set-target!
|
||||
(-> obj neck)
|
||||
(target-pos (-> obj nav-info player-look-at-joint))
|
||||
@@ -259,10 +255,11 @@
|
||||
(set! (-> a1-1 mode) arg2)
|
||||
(set! (-> v1-0 param 1) (the-as uint a1-1))
|
||||
)
|
||||
(when (send-event-function arg0 v1-0)
|
||||
(dummy-54 (-> self collide-info) 2 0)
|
||||
(logior! (-> self nav-enemy-flags) 256)
|
||||
#t
|
||||
(the-as object (when (send-event-function arg0 v1-0)
|
||||
(dummy-54 (-> self collide-info) 2 0)
|
||||
(logior! (-> self nav-enemy-flags) 256)
|
||||
#t
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -456,7 +453,7 @@ nav-enemy-default-event-handler
|
||||
(if
|
||||
(or
|
||||
(logtest? (-> obj nav-enemy-flags) 128)
|
||||
(nonzero? (logand #x80000 (-> obj nav flags)))
|
||||
(logtest? #x80000 (-> obj nav flags))
|
||||
)
|
||||
(seek-to-point-toward-point!
|
||||
(-> obj collide-info)
|
||||
@@ -487,7 +484,7 @@ nav-enemy-default-event-handler
|
||||
8192.0
|
||||
#f
|
||||
(-> obj nav-info hover-if-no-ground)
|
||||
(nonzero? (logand (-> obj nav-enemy-flags) #x8000))
|
||||
(logtest? (-> obj nav-enemy-flags) #x8000)
|
||||
)
|
||||
(dummy-58 (-> obj collide-info) (-> obj collide-info transv))
|
||||
)
|
||||
@@ -600,7 +597,7 @@ nav-enemy-default-event-handler
|
||||
;; definition for function nav-enemy-face-player-post
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defbehavior nav-enemy-face-player-post nav-enemy ()
|
||||
(if (and *target* (nonzero? (logand (-> self nav-enemy-flags) 16)))
|
||||
(if (and *target* (logtest? (-> self nav-enemy-flags) 16))
|
||||
(seek-to-point-toward-point!
|
||||
(-> self collide-info)
|
||||
(target-pos 0)
|
||||
@@ -660,10 +657,7 @@ nav-enemy-default-event-handler
|
||||
;; INFO: Return type mismatch int vs none.
|
||||
(defbehavior nav-enemy-neck-control-inactive nav-enemy ()
|
||||
(when
|
||||
(and
|
||||
(nonzero? (-> self neck))
|
||||
(nonzero? (logand (-> self nav-enemy-flags) #x4000))
|
||||
)
|
||||
(and (nonzero? (-> self neck)) (logtest? (-> self nav-enemy-flags) #x4000))
|
||||
(set! (-> self nav-enemy-flags) (logand -16385 (-> self nav-enemy-flags)))
|
||||
(shut-down! (-> self neck))
|
||||
)
|
||||
@@ -1087,7 +1081,7 @@ nav-enemy-default-event-handler
|
||||
(nonzero? (-> obj skel))
|
||||
(!= (-> obj skel root-channel 0) (-> obj skel channel))
|
||||
)
|
||||
(and (nonzero? (-> obj draw)) (nonzero? (logand (-> obj draw status) 16)))
|
||||
(and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16))
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -1139,7 +1133,7 @@ nav-enemy-default-event-handler
|
||||
(the-as int (-> self state-timeout))
|
||||
)
|
||||
(nonzero? (-> self draw))
|
||||
(nonzero? (logand (-> self draw status) 8))
|
||||
(logtest? (-> self draw status) 8)
|
||||
)
|
||||
(go-virtual nav-enemy-patrol)
|
||||
)
|
||||
@@ -1227,11 +1221,7 @@ nav-enemy-default-event-handler
|
||||
)
|
||||
(the-as int (-> self state-timeout))
|
||||
)
|
||||
(if
|
||||
(and
|
||||
(nonzero? (-> self draw))
|
||||
(nonzero? (logand (-> self draw status) 8))
|
||||
)
|
||||
(if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) 8))
|
||||
(set! (-> self free-time) (-> *display* base-frame-counter))
|
||||
)
|
||||
(if
|
||||
@@ -1903,7 +1893,7 @@ nav-enemy-default-event-handler
|
||||
(if
|
||||
(or
|
||||
(not (TODO-RENAME-46 self (-> self nav-info stop-chase-distance)))
|
||||
(nonzero? (logand (-> self nav-enemy-flags) 8192))
|
||||
(logtest? (-> self nav-enemy-flags) 8192)
|
||||
)
|
||||
(go-virtual nav-enemy-stop-chase)
|
||||
)
|
||||
@@ -2198,7 +2188,7 @@ nav-enemy-default-event-handler
|
||||
)
|
||||
)
|
||||
)
|
||||
(nonzero? (logand #x20000 (-> self nav flags)))
|
||||
(logtest? #x20000 (-> self nav flags))
|
||||
)
|
||||
(go-virtual nav-enemy-give-up)
|
||||
)
|
||||
@@ -2529,7 +2519,7 @@ nav-enemy-default-event-handler
|
||||
(logior! (-> self nav-enemy-flags) 1024)
|
||||
)
|
||||
)
|
||||
(when (and arg1 (nonzero? (logand (-> self nav-enemy-flags) 1024)))
|
||||
(when (and arg1 (logtest? (-> self nav-enemy-flags) 1024))
|
||||
(set! (-> self nav-enemy-flags) (logand -513 (-> self nav-enemy-flags)))
|
||||
(set! f30-0 2048.0)
|
||||
)
|
||||
@@ -2850,7 +2840,7 @@ nav-enemy-default-event-handler
|
||||
(if
|
||||
(or
|
||||
(logtest? (-> self nav-enemy-flags) 128)
|
||||
(nonzero? (logand #x80000 (-> self nav flags)))
|
||||
(logtest? #x80000 (-> self nav flags))
|
||||
)
|
||||
(seek-to-point-toward-point!
|
||||
(-> self collide-info)
|
||||
@@ -2915,7 +2905,7 @@ nav-enemy-default-event-handler
|
||||
)
|
||||
150
|
||||
)
|
||||
(nonzero? (logand #x80000 (-> self nav flags)))
|
||||
(logtest? #x80000 (-> self nav flags))
|
||||
)
|
||||
(go-virtual nav-enemy-chase)
|
||||
)
|
||||
@@ -3164,7 +3154,7 @@ nav-enemy-default-event-handler
|
||||
)
|
||||
(logior!
|
||||
(-> obj nav flags)
|
||||
(nav-control-flags display-marks bit0 bit3 bit5 bit6 bit7)
|
||||
(nav-control-flags display-marks bit3 bit5 bit6 bit7)
|
||||
)
|
||||
(set! (-> obj nav gap-event) 'jump)
|
||||
(dummy-26 (-> obj nav))
|
||||
|
||||
+18
-15
@@ -1786,21 +1786,24 @@
|
||||
:virtual #t
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(case arg2
|
||||
(('move-to)
|
||||
(set!
|
||||
(-> self root trans quad)
|
||||
(-> (the-as vector (-> arg3 param 0)) quad)
|
||||
)
|
||||
(set! (-> self water-height) (-> self root trans y))
|
||||
(if (nonzero? (-> self sound))
|
||||
(update-trans! (-> self sound) (-> self root trans))
|
||||
)
|
||||
(let ((v0-0 (logclear (-> self mask) (process-mask sleep-code))))
|
||||
(set! (-> self mask) v0-0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
(let ((v1-0 arg2))
|
||||
(the-as object (when (= v1-0 'move-to)
|
||||
(set!
|
||||
(-> self root trans quad)
|
||||
(-> (the-as vector (-> arg3 param 0)) quad)
|
||||
)
|
||||
(set! (-> self water-height) (-> self root trans y))
|
||||
(if (nonzero? (-> self sound))
|
||||
(update-trans! (-> self sound) (-> self root trans))
|
||||
)
|
||||
(let
|
||||
((v0-0 (logclear (-> self mask) (process-mask sleep-code)))
|
||||
)
|
||||
(set! (-> self mask) v0-0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:trans
|
||||
|
||||
@@ -129,59 +129,60 @@
|
||||
(defstate teetertotter-launch (teetertotter)
|
||||
:event
|
||||
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
||||
(when (= arg2 'touch)
|
||||
(when
|
||||
(and
|
||||
((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(the-as collide-shape-moving (-> self root))
|
||||
(the-as uint 1)
|
||||
)
|
||||
(-> self rock-is-dangerous)
|
||||
)
|
||||
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-2 from) self)
|
||||
(set! (-> a1-2 num-params) 2)
|
||||
(set! (-> a1-2 message) 'attack)
|
||||
(set! (-> a1-2 param 0) (-> arg3 param 0))
|
||||
(let ((a0-2 (new 'static 'attack-info :mask #x20)))
|
||||
(set! (-> a0-2 mode) 'deadly)
|
||||
(set! (-> a1-2 param 1) (the-as uint a0-2))
|
||||
)
|
||||
(send-event-function arg0 a1-2)
|
||||
)
|
||||
)
|
||||
(when
|
||||
(and
|
||||
((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(the-as collide-shape-moving (-> self root))
|
||||
(the-as uint 2)
|
||||
)
|
||||
(target-on-end-of-teetertotter? self)
|
||||
(not (-> self launched-player))
|
||||
(-> self in-launch-window)
|
||||
)
|
||||
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-4 from) self)
|
||||
(set! (-> a1-4 num-params) 2)
|
||||
(set! (-> a1-4 message) 'shove)
|
||||
(set! (-> a1-4 param 0) (the-as uint #f))
|
||||
(let ((v1-16 (new 'static 'attack-info :mask #xcc0)))
|
||||
(set! (-> v1-16 shove-back) 0.0)
|
||||
(set! (-> v1-16 shove-up) 53248.0)
|
||||
(set! (-> v1-16 angle) 'jump)
|
||||
(set! (-> v1-16 control) 1.0)
|
||||
(set! (-> a1-4 param 1) (the-as uint v1-16))
|
||||
)
|
||||
(when (send-event-function arg0 a1-4)
|
||||
(let ((v0-0 #t))
|
||||
(set! (-> self launched-player) v0-0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(the-as object (when (= arg2 'touch)
|
||||
(when
|
||||
(and
|
||||
((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(the-as collide-shape-moving (-> self root))
|
||||
(the-as uint 1)
|
||||
)
|
||||
(-> self rock-is-dangerous)
|
||||
)
|
||||
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-2 from) self)
|
||||
(set! (-> a1-2 num-params) 2)
|
||||
(set! (-> a1-2 message) 'attack)
|
||||
(set! (-> a1-2 param 0) (-> arg3 param 0))
|
||||
(let ((a0-2 (new 'static 'attack-info :mask #x20)))
|
||||
(set! (-> a0-2 mode) 'deadly)
|
||||
(set! (-> a1-2 param 1) (the-as uint a0-2))
|
||||
)
|
||||
(send-event-function arg0 a1-2)
|
||||
)
|
||||
)
|
||||
(when
|
||||
(and
|
||||
((method-of-type touching-shapes-entry prims-touching?)
|
||||
(the-as touching-shapes-entry (-> arg3 param 0))
|
||||
(the-as collide-shape-moving (-> self root))
|
||||
(the-as uint 2)
|
||||
)
|
||||
(target-on-end-of-teetertotter? self)
|
||||
(not (-> self launched-player))
|
||||
(-> self in-launch-window)
|
||||
)
|
||||
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
|
||||
(set! (-> a1-4 from) self)
|
||||
(set! (-> a1-4 num-params) 2)
|
||||
(set! (-> a1-4 message) 'shove)
|
||||
(set! (-> a1-4 param 0) (the-as uint #f))
|
||||
(let ((v1-16 (new 'static 'attack-info :mask #xcc0)))
|
||||
(set! (-> v1-16 shove-back) 0.0)
|
||||
(set! (-> v1-16 shove-up) 53248.0)
|
||||
(set! (-> v1-16 angle) 'jump)
|
||||
(set! (-> v1-16 control) 1.0)
|
||||
(set! (-> a1-4 param 1) (the-as uint v1-16))
|
||||
)
|
||||
(when (send-event-function arg0 a1-4)
|
||||
(let ((v0-0 #t))
|
||||
(set! (-> self launched-player) v0-0)
|
||||
v0-0
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
:code
|
||||
|
||||
@@ -283,9 +283,7 @@
|
||||
(if
|
||||
(and
|
||||
(-> obj entity)
|
||||
(nonzero?
|
||||
(logand (-> obj entity extra perm status) (entity-perm-status complete))
|
||||
)
|
||||
(logtest? (-> obj entity extra perm status) (entity-perm-status complete))
|
||||
)
|
||||
(go silostep-rise #t)
|
||||
(go silostep-idle)
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
((and
|
||||
(-> obj draw shadow)
|
||||
(zero? (-> obj draw cur-lod))
|
||||
(nonzero? (logand (-> obj draw status) 8))
|
||||
(logtest? (-> obj draw status) 8)
|
||||
)
|
||||
(let ((v1-9 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
((and
|
||||
(-> obj draw shadow)
|
||||
(zero? (-> obj draw cur-lod))
|
||||
(nonzero? (logand (-> obj draw status) 8))
|
||||
(logtest? (-> obj draw status) 8)
|
||||
)
|
||||
(let ((v1-9 (-> obj draw shadow-ctrl)))
|
||||
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
|
||||
|
||||
@@ -2564,7 +2564,7 @@ TEST_F(FormRegressionTest, MoveFalse) {
|
||||
" daddiu sp, sp, 16\n";
|
||||
std::string type = "(function int symbol)";
|
||||
|
||||
std::string expected = "(nonzero? (logand (+ arg0 12) 1))";
|
||||
std::string expected = "(logtest? (+ arg0 12) 1)";
|
||||
test_with_expr(func, type, expected, false, "", {{"L17", "A ~A"}});
|
||||
}
|
||||
|
||||
@@ -2934,7 +2934,7 @@ TEST_F(FormRegressionTest, AshPropagation2) {
|
||||
std::string type = "(function bit-array int symbol)";
|
||||
std::string expected =
|
||||
"(let ((v1-2 (-> arg0 bytes (/ arg1 8))))\n"
|
||||
" (nonzero? (logand v1-2 (ash 1 (logand arg1 7))))\n"
|
||||
" (logtest? v1-2 (ash 1 (logand arg1 7)))\n"
|
||||
" )";
|
||||
test_with_expr(func, type, expected);
|
||||
}
|
||||
@@ -160,6 +160,6 @@ TEST_F(FormRegressionTest, WeirdShortCircuit2) {
|
||||
" jr ra\n"
|
||||
" daddu sp, sp, r0";
|
||||
std::string type = "(function actor-link-info object)";
|
||||
std::string expected = "(and (-> arg0 prev) (-> arg0 prev extra process))";
|
||||
std::string expected = "(the-as object (and (-> arg0 prev) (-> arg0 prev extra process)))";
|
||||
test_with_stack_structures(func, type, expected, "[[16, \"event-message-block\"]]");
|
||||
}
|
||||
Reference in New Issue
Block a user