[decompiler] Several small fixes (#775)

* fix assorted bugs

* stricter return types

* only look for functions in code files
This commit is contained in:
water111
2021-08-19 20:35:12 -04:00
committed by GitHub
parent 69d0840080
commit 11e11d2c04
48 changed files with 461 additions and 304 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+1 -1
View File
@@ -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)))
+1 -1
View File
@@ -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)))