diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index bdf58885a0..c463603f7d 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -8040,14 +8040,14 @@ (defenum draw-status :type uint8 :bitfield #t - (needs-clip 0) - (drwf01 1) - (drwf02 2) - (drwf03 3) - (drwf04 4) - (drwf05 5) - (drwf06 6) - (drwf07 7) + (needs-clip 0) ;; set by engine, determines if object should be clipped + (hidden 1) ;; set by user, can disable drawing and animation codes + (no-anim 2) ;; set by engine, if there is no active joint animation + (was-drawn 3) ;; set by engine, if we were drawn (passed cull checks) + (no-skeleton-update 4) ;; set by engine, if our transforms are not valid + (skip-bones 5) ;; set by user, skips call to draw-bones but does everything else + (do-not-check-distance 6) ;; set by user, ignore in finding closest object for texture calcs + (has-joint-channels 7) ;; set by engine, if the object has joint channels. ) (defenum draw-effect @@ -8113,7 +8113,7 @@ :flag-assert #xc000000bc (:methods (new (symbol type process art-joint-geo) _type_ 0) - (dummy-9 (_type_) vector 9) + (get-skeleton-origin (_type_) vector 9) (lod-set! (_type_ int) none 10) (lods-assign! (_type_ lod-set) none 11) ) @@ -10135,11 +10135,11 @@ :bitfield #t :type uint64 (vent-blocked 0) - (fop1 1) + (has-power-cell 1) ;; should spawn power cell on death (vent-valve 2) - (fop3 3) - (fop4 4) - (fop5 5) + (wrap-phase 3) ;; phase should wrap from 1 to 0 instead of mirroring. + (fop4 4) ;; unused? + (fop5 5) ;; wait-for-cue after death? (fop6 6) (fop7 7) (can-collect 8) @@ -10147,11 +10147,13 @@ (large 10) (fop11 11) (powerup 12) - (fop13 13) - (fop14 14) - (fop15 15) - (fop16 16) - (fop17 17) + ;; strengths + (touch 13) + (normal-attack 14) + (strong-attack 15) + (indestructible 16) + + (fop17 17) ;; unused (eco-blocked 18) (respawn 19) ) @@ -10324,10 +10326,10 @@ (:methods (initialize-skeleton (_type_ skeleton-group pair) none 14) (initialize-skeleton-by-name (_type_ string object) _type_ 15) - (dummy-16 (_type_ int (inline-array vector) vector) collide-shape 16) + (apply-alignment (_type_ int transformq vector) collide-shape 16) (do-joint-math! (_type_) none 17) - (dummy-18 (_type_) none 18) - (dummy-19 (_type_) none 19) + (cleanup-for-death (_type_) none 18) + (evaluate-joint-control (_type_) none 19) ) (:states (process-drawable-art-error string) @@ -10410,7 +10412,7 @@ :flag-assert #xa00000068 ;; field handle is likely a value type (:methods - (dummy-9 (_type_ attack-info) none 9) + (combine! (_type_ attack-info) none 9) ) ) @@ -10476,7 +10478,7 @@ :size-assert #xd0 :flag-assert #x15006000d0 (:methods - (dummy-20 (_type_) symbol 20) + (is-visible? (_type_) symbol 20) ) (:states part-spawner-active) @@ -10532,7 +10534,7 @@ :size-assert #xe0 :flag-assert #xf007000e0 (:methods - (dummy-14 (_type_ pair) process 14) + (eval (_type_ pair) process 14) ) (:states camera-tracker-process) @@ -10630,37 +10632,43 @@ ;; - Types +(defenum pov-camera-flag + :bitfield #t + :type int32 + (notify-of-abort 0) + (allow-abort 1) + (inherit-orientation 2) + ) + (deftype pov-camera (process-drawable) - ((cspace-array cspace-array :offset 112) - (flags int32 :offset-assert 176) - (debounce-start-time time-frame :offset-assert 184) - (notify-handle handle :offset-assert 192) - (anim-name string :offset-assert 200) - (command-list pair :offset-assert 204) ;; not a basic atleast! - (mask-to-clear uint32 :offset-assert 208) - (music-volume-movie float :offset-assert 212) - (sfx-volume-movie float :offset-assert 216) + ((cspace-array cspace-array :offset 112) + (flags pov-camera-flag :offset-assert 176) + (debounce-start-time time-frame :offset-assert 184) + (notify-handle handle :offset-assert 192) + (anim-name string :offset-assert 200) + (command-list pair :offset-assert 204) + (mask-to-clear uint32 :offset-assert 208) + (music-volume-movie float :offset-assert 212) + (sfx-volume-movie float :offset-assert 216) ) :heap-base #x70 :method-count-assert 30 :size-assert #xdc :flag-assert #x1e007000dc - ;; inherited inspect of process-drawable (:methods (pov-camera-abort () _type_ :state 20) (pov-camera-done-playing () _type_ :state 21) - (pov-camera-playing () _type_ :state 22) ;; state - (pov-camera-start-playing () _type_ :state 23) ;; state - (pov-camera-startup () _type_ :state 24) ;; state - (TODO-RENAME-25 (_type_) symbol 25) + (pov-camera-playing () _type_ :state 22) + (pov-camera-start-playing () _type_ :state 23) + (pov-camera-startup () _type_ :state 24) + (check-for-abort (_type_) symbol 25) (target-grabbed? (_type_) symbol 26) - (dummy-27 () none 27) + (pre-startup-callback (_type_) none 27) (target-released? () symbol 28) (set-stack-size! (_type_) none 29) ) ) - ;; ---------------------- ;; File - sync-info-h ;; Source Path - engine/util/sync-info-h.gc @@ -11104,8 +11112,8 @@ (should-push-away-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 11) ;; spat (sphere-on-platform-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 12) ;; sopt (populate-cache! (_type_ collide-mesh-cache-tri matrix) none 13) - (dummy-14 (_type_ object object) none 14) - (dummy-15 (_type_ object object object) none 15) + (collide-mesh-math-1 (_type_ object object) none 14) + (collide-mesh-math-2 (_type_ object object object) none 15) ) ) @@ -19590,8 +19598,8 @@ (deftype cam-dbg-scratch (structure) ((linevec4w vector4w 2 :inline :offset-assert 0) (color vector :inline :offset-assert 32) - (plotvec vector 2 :inline :offset-assert 48) - (linevec vector 2 :inline :offset-assert 80) + (plotvec vector4w 2 :inline :offset-assert 48) + (linevec vector4w 2 :inline :offset-assert 80) (rel-vec vector :inline :offset-assert 112) (sphere-v-start vector :inline :offset-assert 128) (sphere-v-end vector :inline :offset-assert 144) @@ -19660,7 +19668,7 @@ (define-extern camera-line-rel (function vector vector vector4w none)) (define-extern camera-fov-draw (function int int vector float float vector4w symbol)) (define-extern cam-line-dma (function pointer)) -(define-extern camera-line2d (function (pointer vector4w) (pointer vector4w) pointer)) +(define-extern camera-line2d (function vector4w vector4w pointer)) (define-extern camera-plot-float-func (function float float float float (function float float) vector4w none)) (define-extern cam-debug-add-coll-tri (function cam-debug-tri vector cam-debug-tri none)) (define-extern debug-euler (function cam-dbg-scratch object)) @@ -20316,7 +20324,7 @@ (define-extern target-death-anim (function spool-anim none :behavior target)) (define-extern death-movie-remap (function int int int)) -(define-extern pov-camera-init-by-other (function vector skeleton-group string int process-drawable pair none :behavior pov-camera)) ;; TODO - not confirmed -- sunken-elevator +(define-extern pov-camera-init-by-other (function vector skeleton-group string pov-camera-flag process-drawable pair none :behavior pov-camera)) ;; TODO - not confirmed -- sunken-elevator (define-extern target-hit-effect (function attack-info none :behavior target)) (define-extern target-hit-setup-anim (function attack-info object :behavior target)) (define-extern target-hit-move (function attack-info symbol (function none :behavior target) float none :behavior target)) @@ -28406,7 +28414,7 @@ (define-extern inc-angle (function (pointer float) float float)) (define-extern quicksandlurker-missile-init-by-other (function quicksandlurker-missile-init-data entity none :behavior quicksandlurker-missile)) (define-extern get-height-over-navmesh! function) ;; unused -(define-extern intersects-nav-mesh? (function quicksandlurker int (inline-array vector) vector symbol)) ;; unused +(define-extern intersects-nav-mesh? (function nav-control vector symbol)) ;; unused (define-extern quicksandlurker-default-event-handler (function process int symbol event-message-block object :behavior quicksandlurker)) (define-extern quicksandlurker-post (function none :behavior quicksandlurker)) diff --git a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc index 37a7c62d53..9e456e0301 100644 --- a/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/anonymous_function_types.jsonc @@ -768,13 +768,13 @@ "relocate": [[6, "(function sparticle-system sparticle-cpuinfo none)"]], - "fisher-JUN": [ + "fisher": [ [27, "(function none :behavior process)"], [28, "(function none :behavior fisher)"], [20, "(function none :behavior fisher-fish)"], [1, "(function none :behavior manipy)"] ], - "fisher-JUNGLE-L1": [ + "fisher-OLD": [ [27, "(function none :behavior process)"], [28, "(function none :behavior fisher)"], [20, "(function none :behavior fisher-fish)"], @@ -785,7 +785,7 @@ [5, "(function sparticle-launch-control :behavior finalbosscam)"] ], - "sage-finalboss-FIN": [ + "sage-finalboss": [ [21, "(function none :behavior sage-finalboss)"], [22, "(function none :behavior sage-finalboss)"], [15, "(function final-door symbol)"], @@ -793,7 +793,7 @@ [7, "(function final-door symbol)"], [6, "(function final-door symbol)"] ], - "sage-finalboss-L1": [ + "sage-finalboss-OLD": [ [21, "(function none :behavior sage-finalboss)"], [22, "(function none :behavior sage-finalboss)"], [15, "(function final-door symbol)"], @@ -802,7 +802,7 @@ [6, "(function final-door symbol)"] ], - "racer-states-FIC-LAV-MIS-OGR-ROL": [ + "racer-states": [ [17, "(function (pointer process) :behavior racer)"], [45, "(function joint-mod :behavior manipy)"], [46, "(function float :behavior manipy)"] diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index 8891b03ed8..01f39d007f 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -988,11 +988,11 @@ ["L670", "uint64", true] ], - "fisher-JUN": [ + "fisher": [ ["L262", "vector"], ["L463", "(array (inline-array fisher-params))"] ], - "fisher-JUNGLE-L1": [ + "fisher-OLD": [ ["L262", "vector"], ["L463", "(array (inline-array fisher-params))"] ], @@ -1128,13 +1128,13 @@ ["L816", "uint64", true] ], - "sage-finalboss-FIN": [ + "sage-finalboss": [ ["L528", "vector"], ["L272", "vector"], ["L527", "quaternion"] ], - "sage-finalboss-L1": [ + "sage-finalboss-OLD": [ ["L528", "vector"], ["L272", "vector"], ["L527", "quaternion"] @@ -1581,7 +1581,7 @@ "racer": [["L106", "vector"]], - "target-racer-FIC-LAV-MIS-OGR-ROL": [ + "target-racer": [ ["L237", "attack-info"], ["L238", "attack-info"], ["L240", "vector"] diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index 829b38c979..bec98f65c1 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -3069,7 +3069,7 @@ "(exit target-racing-death)": [[16, "event-message-block"]], - "(anon-function 17 racer-states-FIC-LAV-MIS-OGR-ROL)": [ + "(anon-function 17 racer-states)": [ [16, "joint-exploder-tuning"] ], diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index ffe24f64ad..640a0192b4 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -4019,11 +4019,11 @@ [251, "a0", "process-drawable"] ], - "(anon-function 46 racer-states-FIC-LAV-MIS-OGR-ROL)": [ + "(anon-function 46 racer-states)": [ [[4, 32], "v1", "target"] ], - "(anon-function 45 racer-states-FIC-LAV-MIS-OGR-ROL)": [ + "(anon-function 45 racer-states)": [ [19, "a0", "target"], [31, "a0", "target"], [42, "v1", "target"] diff --git a/goal_src/engine/anim/aligner-h.gc b/goal_src/engine/anim/aligner-h.gc index 41e6eb6a4d..b2df7e45b1 100644 --- a/goal_src/engine/anim/aligner-h.gc +++ b/goal_src/engine/anim/aligner-h.gc @@ -5,7 +5,7 @@ ;; name in dgo: aligner-h ;; dgos: GAME, ENGINE - +;; The align control is responsible for aligning an animation to a moving character. (deftype align-control (basic) ((flags uint32 :offset-assert 4) (process process-drawable :offset-assert 8) @@ -32,16 +32,16 @@ (defmethod new align-control ((allocation symbol) (type-to-make type) (proc process)) - + "Create a new align-control." (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - (when (zero? obj) - (go process-drawable-art-error "memory") - (return (the align-control 0)) - ) - - (set! (-> obj process) (the-as process-drawable proc)) - obj + (when (zero? obj) + (go process-drawable-art-error "memory") + (return (the align-control 0)) ) + + (set! (-> obj process) (the-as process-drawable proc)) + obj + ) ) diff --git a/goal_src/engine/anim/aligner.gc b/goal_src/engine/anim/aligner.gc index ee7fd03d37..1f06cc5244 100644 --- a/goal_src/engine/anim/aligner.gc +++ b/goal_src/engine/anim/aligner.gc @@ -171,23 +171,20 @@ ) ;; definition for method 10 of type align-control -(defmethod - TODO-RENAME-10 - align-control - ((obj align-control) (arg0 int) (arg1 float) (arg2 float) (arg3 float)) +(defmethod TODO-RENAME-10 align-control ((obj align-control) (arg0 int) (arg1 float) (arg2 float) (arg3 float)) (when (zero? (logand (-> obj flags) 1)) - (let* ((a0-1 (-> obj process)) - (t9-0 (method-of-object a0-1 dummy-16)) - (v1-4 (-> obj delta)) - (t1-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> t1-0 x) arg1) - (set! (-> t1-0 y) arg2) - (set! (-> t1-0 z) arg3) - (set! (-> t1-0 w) 1.0) - (t9-0 a0-1 arg0 (the-as (inline-array vector) v1-4) t1-0) + (let* ((a0-1 (-> obj process)) + (t9-0 (method-of-object a0-1 apply-alignment)) + (v1-4 (-> obj delta)) + (t1-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> t1-0 x) arg1) + (set! (-> t1-0 y) arg2) + (set! (-> t1-0 z) arg3) + (set! (-> t1-0 w) 1.0) + (t9-0 a0-1 arg0 v1-4 t1-0) + ) ) - ) (-> obj process root) ) diff --git a/goal_src/engine/anim/joint-h.gc b/goal_src/engine/anim/joint-h.gc index a55fd55ade..2523395170 100644 --- a/goal_src/engine/anim/joint-h.gc +++ b/goal_src/engine/anim/joint-h.gc @@ -16,6 +16,8 @@ ;; These types are specific to joint control. ;; See mspace-h.gc for the actual joint types +;; A single joint control channel. It can control some number of joints through a single animation. +;; Multiple channels are blended together to create smooth transitions between animations. (deftype joint-control-channel (structure) ((parent joint-control :offset-assert 0) (command symbol :offset-assert 4) @@ -38,7 +40,7 @@ ) ) - +;; A collection of joint-control-channels. (deftype joint-control (basic) ((status uint16 :offset-assert 4) (allocated-length int16 :offset-assert 6) @@ -70,6 +72,11 @@ ) ) +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; joint anim decompress +;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; these types are used to decompress joint animations. (deftype matrix-stack (structure) ((top matrix :offset-assert 0) diff --git a/goal_src/engine/camera/cam-debug.gc b/goal_src/engine/camera/cam-debug.gc index 90db257fef..16d12c697e 100644 --- a/goal_src/engine/camera/cam-debug.gc +++ b/goal_src/engine/camera/cam-debug.gc @@ -8,34 +8,42 @@ ;; this file is debug only (declare-file (debug)) (when *debug-segment* +;; failed to figure out what this is: (when (or (not *camera-old-cpu*) (zero? *camera-old-cpu*)) (set! *camera-old-cpu* 0) 0 ) +;; failed to figure out what this is: (when (or (not *camera-old-vu*) (zero? *camera-old-vu*)) (set! *camera-old-vu* 0) 0 ) +;; failed to figure out what this is: (when (or (not *camera-old-tfrag-bytes*) (zero? *camera-old-tfrag-bytes*)) (set! *camera-old-tfrag-bytes* 0) 0 ) +;; definition (perm) for symbol *camera-old-level*, type string (define-perm *camera-old-level* string (new 'global 'string 128 (the-as string #f))) +;; definition (perm) for symbol *camera-old-stat-string-tfrag*, type string (define-perm *camera-old-stat-string-tfrag* string (new 'global 'string 128 (the-as string #f))) +;; definition (perm) for symbol *camera-old-stat-string-tfrag-near*, type string (define-perm *camera-old-stat-string-tfrag-near* string (new 'global 'string 128 (the-as string #f))) +;; definition (perm) for symbol *camera-old-stat-string-total*, type string (define-perm *camera-old-stat-string-total* string (new 'global 'string 128 (the-as string #f))) +;; definition of type cam-dbg-scratch (deftype cam-dbg-scratch (structure) ((linevec4w vector4w 2 :inline :offset-assert 0) (color vector :inline :offset-assert 32) - (plotvec vector 2 :inline :offset-assert 48) - (linevec vector 2 :inline :offset-assert 80) + (plotvec vector4w 2 :inline :offset-assert 48) + (linevec vector4w 2 :inline :offset-assert 80) (rel-vec vector :inline :offset-assert 112) (sphere-v-start vector :inline :offset-assert 128) (sphere-v-end vector :inline :offset-assert 144) @@ -54,7 +62,30 @@ :flag-assert #x9000001d0 ) +;; definition for method 3 of type cam-dbg-scratch +(defmethod inspect cam-dbg-scratch ((obj cam-dbg-scratch)) + (format #t "[~8x] ~A~%" obj 'cam-dbg-scratch) + (format #t "~Tlinevec4w[2] @ #x~X~%" (-> obj linevec4w)) + (format #t "~Tcolor: ~`vector`P~%" (-> obj color)) + (format #t "~Tplotvec[2] @ #x~X~%" (-> obj plotvec)) + (format #t "~Tlinevec[2] @ #x~X~%" (-> obj linevec)) + (format #t "~Trel-vec: ~`vector`P~%" (-> obj rel-vec)) + (format #t "~Tsphere-v-start: ~`vector`P~%" (-> obj sphere-v-start)) + (format #t "~Tsphere-v-end: ~`vector`P~%" (-> obj sphere-v-end)) + (format #t "~Tsphere-v-down: ~`vector`P~%" (-> obj sphere-v-down)) + (format #t "~Tsphere-vec: ~`vector`P~%" (-> obj sphere-vec)) + (format #t "~Tcrossvec[3] @ #x~X~%" (-> obj crossvec)) + (format #t "~Tbboxvec[6] @ #x~X~%" (-> obj bboxvec)) + (format #t "~Tfov-vv[4] @ #x~X~%" (-> obj fov-vv)) + (format #t "~Tfov-src: ~`vector`P~%" (-> obj fov-src)) + (format #t "~Tfov-dest: ~`vector`P~%" (-> obj fov-dest)) + (format #t "~Tfov-vert: ~`vector`P~%" (-> obj fov-vert)) + (format #t "~Tfov-horz: ~`vector`P~%" (-> obj fov-horz)) + obj + ) +;; definition for function cam-slave-options->string +;; INFO: Return type mismatch object vs string. (defun cam-slave-options->string ((arg0 cam-slave-options) (arg1 object)) (if (= (logand (cam-slave-options AIR_EXIT) arg0) (cam-slave-options AIR_EXIT)) (format arg1 "AIR_EXIT ") @@ -113,6 +144,8 @@ (the-as string arg1) ) +;; definition for function cam-index-options->string +;; INFO: Return type mismatch object vs string. (defun cam-index-options->string ((arg0 cam-index-options) (arg1 object)) (if (= (logand arg0 (cam-index-options SPHERICAL)) (cam-index-options SPHERICAL)) (format arg1 "RADIAL ") @@ -123,6 +156,7 @@ (the-as string arg1) ) +;; definition for function slave-los-state->string (defun slave-los-state->string ((arg0 slave-los-state)) (case arg0 (((slave-los-state between)) @@ -143,6 +177,413 @@ ) ) +;; definition for function cam-line-dma +;; Used lq/sq +(defun cam-line-dma () + (let* ((v1-3 (-> *display* frames (-> *display* on-screen) frame debug-buf)) + (a2-0 (-> v1-3 base)) + ) + (let ((a0-3 (the-as object (-> v1-3 base)))) + (let* ((a1-0 v1-3) + (a3-0 (the-as object (-> a1-0 base))) + ) + (set! (-> (the-as dma-packet a3-0) dma) (new 'static 'dma-tag :id (dma-tag-id cnt))) + (set! (-> (the-as dma-packet a3-0) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a3-0) vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1)) + (set! (-> a1-0 base) (&+ (the-as pointer a3-0) 16)) + ) + (let* ((a1-1 v1-3) + (a3-2 (the-as object (-> a1-1 base))) + ) + (set! (-> (the-as gs-gif-tag a3-2) tag) + (new 'static 'gif-tag64 + :nloop #x1 + :eop #x1 + :pre #x1 + :prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1) + :nreg #x4 + ) + ) + (set! (-> (the-as gs-gif-tag a3-2) regs) + (new 'static 'gif-tag-regs + :regs0 (gif-reg-id rgbaq) + :regs1 (gif-reg-id xyzf2) + :regs2 (gif-reg-id rgbaq) + :regs3 (gif-reg-id xyzf2) + ) + ) + (set! (-> a1-1 base) (&+ (the-as pointer a3-2) 16)) + ) + (let* ((a1-2 v1-3) + (a3-4 (-> a1-2 base)) + ) + (set! (-> (the-as (pointer uint128) a3-4) 0) (-> (the-as vector (+ 32 (scratchpad-object int))) quad)) + (set! (-> (the-as (pointer uint128) a3-4) 1) (-> (the-as vector (-> (scratchpad-object cam-dbg-scratch) linevec4w)) quad)) + (set! (-> a1-2 base) (&+ a3-4 32)) + ) + (let* ((a3-6 v1-3) + (a1-3 (-> a3-6 base)) + ) + (set! (-> (the-as (pointer uint128) a1-3) 0) (-> (the-as vector (+ 32 (scratchpad-object int))) quad)) + (set! (-> (the-as (pointer uint128) a1-3) 1) (-> (the-as vector (+ 16 (scratchpad-object int))) quad)) + (set! (-> a3-6 base) (&+ a1-3 32)) + ) + (let ((a3-10 (/ (the-as int (+ (- -16 (the-as int a0-3)) (the-as int (-> v1-3 base)))) 16))) + (cond + ((nonzero? a3-10) + (logior! (-> (the-as dma-packet a0-3) dma) (shr (shl a3-10 48) 48)) + (logior! (-> (the-as (pointer uint64) a0-3) 1) (shl (shr (shl a3-10 48) 48) 32)) + ) + (else + (set! (-> v1-3 base) (the-as (pointer uint64) a0-3)) + ) + ) + ) + ) + (let ((a3-16 (-> v1-3 base))) + (let ((a0-4 (the-as object (-> v1-3 base)))) + (set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :id (dma-tag-id next))) + (set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag)) + (set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag)) + (set! (-> v1-3 base) (&+ (the-as pointer a0-4) 16)) + ) + (dma-bucket-insert-tag + (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id debug-draw1) + a2-0 + (the-as (pointer dma-tag) a3-16) + ) + ) + ) + ) + +;; definition for function camera-line2d +(defun camera-line2d ((arg0 vector4w) (arg1 vector4w)) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 0 x) (* (+ (-> arg0 x) 1792) 16)) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 0 y) (* (- (-> *video-parms* screen-maxy) (-> arg0 y)) 16)) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 0 z) #x7fffff) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 x) (* (+ (-> arg1 x) 1792) 16)) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 y) (* (- (-> *video-parms* screen-maxy) (-> arg1 y)) 16)) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 z) #x7fffff) + (cam-line-dma) + ) + +;; definition for function camera-plot-float-func +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defun camera-plot-float-func ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 (function float float)) (arg5 vector4w)) + (let ((f30-0 (- arg1 arg0)) + (f24-0 (- arg3 arg2)) + ) + 0.0 + 0.0 + (let ((f28-0 (/ 200.0 f24-0)) + (f26-0 (/ 400.0 f30-0)) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) color x) (the-as float 128)) + (set! (-> (scratchpad-object cam-dbg-scratch) color y) (the-as float 128)) + (set! (-> (scratchpad-object cam-dbg-scratch) color z) (the-as float 128)) + (set! (-> (scratchpad-object cam-dbg-scratch) color w) (the-as float 128)) + (when (and (< arg0 0.0) (< 0.0 arg1)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) (+ (the int (* f26-0 f30-0 (/ (- arg0) f30-0))) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) + (camera-line2d + (the-as vector4w (+ 48 (scratchpad-object int))) + (the-as vector4w (+ 64 (scratchpad-object int))) + ) + ) + (when (and (< arg2 0.0) (< 0.0 arg3)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) (+ (the int (* f28-0 f24-0 (/ (- arg2) f24-0))) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y)) + (camera-line2d + (the-as vector4w (+ 48 (scratchpad-object int))) + (the-as vector4w (+ 64 (scratchpad-object int))) + ) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) 20) + (camera-line2d + (the-as vector4w (+ 48 (scratchpad-object int))) + (the-as vector4w (+ 64 (scratchpad-object int))) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) (+ (the int (* f28-0 f24-0)) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) + (camera-line2d + (the-as vector4w (+ 48 (scratchpad-object int))) + (the-as vector4w (+ 64 (scratchpad-object int))) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) + (camera-line2d + (the-as vector4w (+ 48 (scratchpad-object int))) + (the-as vector4w (+ 64 (scratchpad-object int))) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 x) (+ (the int (* f26-0 f30-0)) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 y) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ (the int (* f26-0 f30-0)) 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 f24-0)) 20)) + (camera-line2d + (the-as vector4w (+ 48 (scratchpad-object int))) + (the-as vector4w (+ 64 (scratchpad-object int))) + ) + (let ((v1-62 (-> arg5 quad))) + (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-62) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) 20) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) (+ (the int (* f28-0 (- (arg4 arg0) arg2))) 20)) + (let ((s3-1 1)) + (while (>= (the int (* f26-0 f30-0)) s3-1) + (let ((v1-67 (-> (scratchpad-object cam-dbg-scratch) plotvec 1 quad))) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 0 quad) v1-67) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 x) (+ s3-1 20)) + (set! (-> (scratchpad-object cam-dbg-scratch) plotvec 1 y) + (+ (the int (* f28-0 (- (arg4 (+ arg0 (* f30-0 (/ (the float s3-1) (* f26-0 f30-0))))) arg2))) 20) + ) + (camera-line2d + (the-as vector4w (+ 48 (scratchpad-object int))) + (the-as vector4w (+ 64 (scratchpad-object int))) + ) + (+! s3-1 1) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function camera-line-setup +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defun camera-line-setup ((arg0 vector4w)) + (let ((v1-0 (-> arg0 quad))) + (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-0) + ) + (init-for-transform *identity-matrix*) + 0 + (none) + ) + +;; definition for function camera-line-draw +;; INFO: Return type mismatch int vs symbol. +;; Used lq/sq +(defun camera-line-draw ((arg0 vector) (arg1 vector)) + (set! (-> (the-as (pointer uint128) (+ 80 (scratchpad-object int)))) (-> arg0 quad)) + (set! (-> (the-as (pointer uint128) (+ 96 (scratchpad-object int)))) (-> arg1 quad)) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec 0 w) (the-as int 1.0)) + (set! (-> (scratchpad-object cam-dbg-scratch) linevec 1 w) (the-as int 1.0)) + (transform-float-point + (the-as vector (+ 80 (scratchpad-object int))) + (the-as vector4w (-> (scratchpad-object cam-dbg-scratch) linevec4w)) + ) + (transform-float-point + (the-as vector (+ 96 (scratchpad-object int))) + (the-as vector4w (+ 16 (scratchpad-object int))) + ) + (cond + ((< (the-as uint #xe00000) (the-as uint (-> (scratchpad-object cam-dbg-scratch) linevec4w 0 z))) + (return (the-as symbol #f)) + ) + ((< (the-as uint #xe00000) (the-as uint (-> (scratchpad-object cam-dbg-scratch) linevec4w 1 z))) + (return (the-as symbol #f)) + ) + ) + (cam-line-dma) + (the-as symbol 0) + ) + +;; definition for function camera-line +;; INFO: Return type mismatch int vs none. +(defun camera-line ((arg0 vector) (arg1 vector) (arg2 vector4w)) + (camera-line-setup arg2) + (camera-line-draw arg0 arg1) + 0 + (none) + ) + +;; definition for function camera-line-rel +(defun camera-line-rel ((arg0 vector) (arg1 vector) (arg2 vector4w)) + (vector+! (the-as vector (+ 112 (scratchpad-object int))) arg0 arg1) + (camera-line arg0 (the-as vector (+ 112 (scratchpad-object int))) arg2) + (none) + ) + +;; definition for function camera-line-rel-len +(defun camera-line-rel-len ((arg0 vector) (arg1 vector) (arg2 float) (arg3 vector4w)) + (vector-normalize-copy! (the-as vector (+ 112 (scratchpad-object int))) arg1 arg2) + (vector+! + (the-as vector (+ 112 (scratchpad-object int))) + (the-as vector (+ 112 (scratchpad-object int))) + arg0 + ) + (camera-line arg0 (the-as vector (+ 112 (scratchpad-object int))) arg3) + (none) + ) + +;; definition for function camera-sphere +;; INFO: Return type mismatch int vs none. +(defun camera-sphere ((arg0 vector) (arg1 float) (arg2 vector)) + (camera-line-setup (the-as vector4w arg2)) + (dotimes (s4-0 10) + (let ((f30-1 (* arg1 (sin (* 3276.8 (the float s4-0))))) + (f28-1 (* arg1 (sin (* 3276.8 (the float (+ s4-0 1)))))) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start y) + (+ (-> arg0 y) (* (cos (* 3276.8 (the float s4-0))) arg1)) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end y) + (-> (scratchpad-object cam-dbg-scratch) sphere-v-start y) + ) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down y) (+ (-> arg0 y) (* (cos (* 3276.8 (the float (+ s4-0 1)))) arg1))) + (dotimes (s3-0 10) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start x) (+ (-> arg0 x) (* (cos (* 6553.6 (the float s3-0))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-start z) (+ (-> arg0 z) (* (sin (* 6553.6 (the float s3-0))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end x) (+ (-> arg0 x) (* (cos (* 6553.6 (the float (+ s3-0 1)))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-end z) (+ (-> arg0 z) (* (sin (* 6553.6 (the float (+ s3-0 1)))) f30-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down x) (+ (-> arg0 x) (* (cos (* 6553.6 (the float s3-0))) f28-1))) + (set! (-> (scratchpad-object cam-dbg-scratch) sphere-v-down z) (+ (-> arg0 z) (* (sin (* 6553.6 (the float s3-0))) f28-1))) + (camera-line-draw + (the-as vector (+ 128 (scratchpad-object int))) + (the-as vector (+ 144 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 128 (scratchpad-object int))) + (the-as vector (+ 160 (scratchpad-object int))) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function camera-cross +;; INFO: Return type mismatch none vs basic. +(defun camera-cross ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector4w) (arg4 meters)) + (vector-normalize-copy! (the-as vector (+ 192 (scratchpad-object int))) arg0 arg4) + (vector+! + (the-as vector (+ 208 (scratchpad-object int))) + arg2 + (the-as vector (+ 192 (scratchpad-object int))) + ) + (vector-! + (the-as vector (+ 224 (scratchpad-object int))) + arg2 + (the-as vector (+ 192 (scratchpad-object int))) + ) + (camera-line + (the-as vector (+ 208 (scratchpad-object int))) + (the-as vector (+ 224 (scratchpad-object int))) + arg3 + ) + (vector-cross! + (the-as vector (+ 192 (scratchpad-object int))) + (the-as vector (+ 192 (scratchpad-object int))) + arg1 + ) + (vector-normalize! (the-as vector (+ 192 (scratchpad-object int))) arg4) + (vector+! + (the-as vector (+ 208 (scratchpad-object int))) + arg2 + (the-as vector (+ 192 (scratchpad-object int))) + ) + (vector-! + (the-as vector (+ 224 (scratchpad-object int))) + arg2 + (the-as vector (+ 192 (scratchpad-object int))) + ) + (camera-line + (the-as vector (+ 208 (scratchpad-object int))) + (the-as vector (+ 224 (scratchpad-object int))) + arg3 + ) + (vector-cross! + (the-as vector (+ 192 (scratchpad-object int))) + (the-as vector (+ 192 (scratchpad-object int))) + arg0 + ) + (vector-normalize! (the-as vector (+ 192 (scratchpad-object int))) arg4) + (vector+! + (the-as vector (+ 208 (scratchpad-object int))) + arg2 + (the-as vector (+ 192 (scratchpad-object int))) + ) + (vector-! + (the-as vector (+ 224 (scratchpad-object int))) + arg2 + (the-as vector (+ 192 (scratchpad-object int))) + ) + (the-as basic (camera-line + (the-as vector (+ 208 (scratchpad-object int))) + (the-as vector (+ 224 (scratchpad-object int))) + arg3 + ) + ) + ) + +;; definition for function camera-bounding-box-draw +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defun camera-bounding-box-draw ((arg0 bounding-box) (arg1 basic) (arg2 rgba)) + (camera-line-setup (new 'static 'vector4w :x #x7f :y #x7f :z #x7f :w #x80)) + (set! (-> (the-as (pointer uint128) (+ 240 (scratchpad-object int)))) (-> arg0 min quad)) + (set! (-> (scratchpad-object cam-dbg-scratch) bboxvec 0 x) (-> arg0 max x)) + (set! (-> (the-as (pointer uint128) (+ 256 (scratchpad-object int)))) (-> arg0 min quad)) + (set! (-> (scratchpad-object cam-dbg-scratch) bboxvec 1 y) (-> arg0 max y)) + (set! (-> (the-as (pointer uint128) (+ 272 (scratchpad-object int)))) (-> arg0 min quad)) + (set! (-> (scratchpad-object cam-dbg-scratch) bboxvec 2 z) (-> arg0 max z)) + (set! (-> (the-as (pointer uint128) (+ 288 (scratchpad-object int)))) (-> arg0 max quad)) + (set! (-> (scratchpad-object cam-dbg-scratch) bboxvec 3 x) (-> arg0 min x)) + (set! (-> (the-as (pointer uint128) (+ 304 (scratchpad-object int)))) (-> arg0 max quad)) + (set! (-> (scratchpad-object cam-dbg-scratch) bboxvec 4 y) (-> arg0 min y)) + (set! (-> (the-as (pointer uint128) (+ 320 (scratchpad-object int)))) (-> arg0 max quad)) + (set! (-> (scratchpad-object cam-dbg-scratch) bboxvec 5 z) (-> arg0 min z)) + (camera-line-draw (-> arg0 min) (the-as vector (+ 240 (scratchpad-object int)))) + (camera-line-draw (-> arg0 min) (the-as vector (+ 256 (scratchpad-object int)))) + (camera-line-draw (-> arg0 min) (the-as vector (+ 272 (scratchpad-object int)))) + (camera-line-draw (-> arg0 max) (the-as vector (+ 288 (scratchpad-object int)))) + (camera-line-draw (-> arg0 max) (the-as vector (+ 304 (scratchpad-object int)))) + (camera-line-draw (-> arg0 max) (the-as vector (+ 320 (scratchpad-object int)))) + (camera-line-draw + (the-as vector (+ 240 (scratchpad-object int))) + (the-as vector (+ 304 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 304 (scratchpad-object int))) + (the-as vector (+ 272 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 272 (scratchpad-object int))) + (the-as vector (+ 288 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 288 (scratchpad-object int))) + (the-as vector (+ 256 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 256 (scratchpad-object int))) + (the-as vector (+ 320 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 320 (scratchpad-object int))) + (the-as vector (+ 240 (scratchpad-object int))) + ) + 0 + (none) + ) + +;; definition of type cam-debug-tri (deftype cam-debug-tri (structure) ((vertex vector 3 :inline :offset-assert 0) (intersect vector :inline :offset-assert 48) @@ -153,15 +594,29 @@ :flag-assert #x900000044 ) +;; definition for method 3 of type cam-debug-tri +(defmethod inspect cam-debug-tri ((obj cam-debug-tri)) + (format #t "[~8x] ~A~%" obj 'cam-debug-tri) + (format #t "~Tvertex[3] @ #x~X~%" (-> obj vertex)) + (format #t "~Tintersect: #~%" (-> obj intersect)) + (format #t "~Tcolor: #~%" (-> obj color)) + obj + ) +;; definition for symbol *cam-debug-los-tri-current*, type int (define *cam-debug-los-tri-current* 0) +;; definition for symbol *cam-debug-los-tri*, type (inline-array cam-debug-tri) (define *cam-debug-los-tri* (the-as (inline-array cam-debug-tri) (malloc 'debug #x8fc0))) +;; definition for symbol *cam-debug-coll-tri-current*, type int (define *cam-debug-coll-tri-current* 0) +;; definition for symbol *cam-debug-coll-tri*, type (inline-array cam-debug-tri) (define *cam-debug-coll-tri* (the-as (inline-array cam-debug-tri) (malloc 'debug #x8fc0))) +;; definition for function cam-debug-reset-coll-tri +;; INFO: Return type mismatch int vs none. (defun cam-debug-reset-coll-tri () (set! *cam-debug-los-tri-current* 0) (set! *cam-debug-coll-tri-current* 0) @@ -169,6 +624,9 @@ (none) ) +;; definition for function cam-debug-add-los-tri +;; INFO: Return type mismatch int vs none. +;; Used lq/sq (defun cam-debug-add-los-tri ((arg0 (inline-array collide-cache-tri)) (arg1 vector) (arg2 vector)) (cond ((>= *cam-debug-los-tri-current* 460) @@ -191,6 +649,9 @@ (none) ) +;; definition for function cam-debug-add-coll-tri +;; INFO: Return type mismatch int vs none. +;; Used lq/sq (defun cam-debug-add-coll-tri ((arg0 cam-debug-tri) (arg1 vector) (arg2 cam-debug-tri)) (cond ((>= *cam-debug-coll-tri-current* 460) @@ -213,6 +674,164 @@ (none) ) +;; definition for function cam-debug-draw-tris +;; Used lq/sq +(defun cam-debug-draw-tris () + (camera-line-setup (new 'stack 'vector4w)) + (when *display-cam-los-marks* + (dotimes (gp-1 *cam-debug-los-tri-current*) + (let ((v1-7 (-> *cam-debug-los-tri* gp-1 color quad))) + (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-7) + ) + (camera-line-draw + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0)) (* 80 gp-1))) + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 1)) (* 80 gp-1))) + ) + (camera-line-draw + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 1)) (* 80 gp-1))) + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 2)) (* 80 gp-1))) + ) + (camera-line-draw + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0 vertex 2)) (* 80 gp-1))) + (the-as vector (+ (the-as uint (-> *cam-debug-los-tri* 0)) (* 80 gp-1))) + ) + (camera-cross + (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + (-> *cam-debug-los-tri* gp-1 intersect) + (-> *cam-debug-los-tri* gp-1 color) + (meters 0.25) + ) + ) + ) + (when *display-cam-coll-marks* + (dotimes (gp-2 *cam-debug-coll-tri-current*) + (let ((v1-34 (-> *cam-debug-coll-tri* gp-2 color quad))) + (set! (-> (scratchpad-object cam-dbg-scratch) color quad) v1-34) + ) + (camera-line-draw + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0)) (* 80 gp-2))) + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 1)) (* 80 gp-2))) + ) + (camera-line-draw + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 1)) (* 80 gp-2))) + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 2)) (* 80 gp-2))) + ) + (camera-line-draw + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0 vertex 2)) (* 80 gp-2))) + (the-as vector (+ (the-as uint (-> *cam-debug-coll-tri* 0)) (* 80 gp-2))) + ) + (camera-cross + (new 'static 'vector :y 1024.0) + (new 'static 'vector :z 1024.0) + (-> *cam-debug-coll-tri* gp-2 intersect) + (-> *cam-debug-coll-tri* gp-2 color) + (meters 0.25) + ) + ) + #f + ) + ) + +;; definition for function camera-fov-draw +(defun camera-fov-draw ((arg0 int) (arg1 int) (arg2 vector) (arg3 float) (arg4 float) (arg5 vector4w)) + (vector+float*! (the-as vector (+ 336 (scratchpad-object int))) arg2 (the-as vector arg1) arg3) + (vector+float*! (the-as vector (+ 352 (scratchpad-object int))) arg2 (the-as vector arg0) arg3) + (vector+float*! (the-as vector (+ 368 (scratchpad-object int))) arg2 (the-as vector arg0) arg4) + (vector+float*! (the-as vector (+ 384 (scratchpad-object int))) arg2 (the-as vector arg1) arg4) + (camera-line-setup arg5) + (camera-line-draw + (the-as vector (+ 336 (scratchpad-object int))) + (the-as vector (+ 352 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 352 (scratchpad-object int))) + (the-as vector (+ 368 (scratchpad-object int))) + ) + (camera-line-draw + (the-as vector (+ 368 (scratchpad-object int))) + (the-as vector (+ 384 (scratchpad-object int))) + ) + ) + +;; definition for function camera-fov-frame +;; INFO: Return type mismatch symbol vs none. +;; Used lq/sq +(defun camera-fov-frame ((arg0 matrix) (arg1 vector) (arg2 float) (arg3 float) (arg4 float) (arg5 vector4w)) + (vector-float*! (the-as vector (+ 432 (scratchpad-object int))) (-> arg0 vector 1) (* arg3 (tan arg2))) + (vector-float*! + (the-as vector (+ 448 (scratchpad-object int))) + (the-as vector (-> arg0 vector)) + (* arg4 (tan arg2)) + ) + (vector+! + (the-as vector (+ 400 (scratchpad-object int))) + (-> arg0 vector 2) + (vector+! + (the-as vector (+ 400 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))) + ) + ) + (vector-normalize! (the-as vector (+ 400 (scratchpad-object int))) 1.0) + (vector+! + (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector-! + (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))) + ) + ) + (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) + (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) + (set! (-> (the-as (pointer uint128) (+ 400 (scratchpad-object int)))) + (-> (the-as vector (+ 416 (scratchpad-object int))) quad) + ) + (vector-! + (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector+! + (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))) + ) + ) + (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) + (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) + (set! (-> (the-as (pointer uint128) (+ 400 (scratchpad-object int)))) + (-> (the-as vector (+ 416 (scratchpad-object int))) quad) + ) + (vector-! + (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector-! + (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))) + ) + ) + (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) + (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) + (set! (-> (the-as (pointer uint128) (+ 400 (scratchpad-object int)))) + (-> (the-as vector (+ 416 (scratchpad-object int))) quad) + ) + (vector+! + (the-as vector (+ 416 (scratchpad-object int))) + (-> arg0 vector 2) + (vector+! + (the-as vector (+ 416 (scratchpad-object int))) + (the-as vector (+ 432 (scratchpad-object int))) + (the-as vector (+ 448 (scratchpad-object int))) + ) + ) + (vector-normalize! (the-as vector (+ 416 (scratchpad-object int))) 1.0) + (camera-fov-draw (+ 400 (scratchpad-object int)) (+ 416 (scratchpad-object int)) arg1 4096.0 20480.0 arg5) + (none) + ) + +;; definition for method 11 of type tracking-spline +;; INFO: Return type mismatch int vs none. (defmethod print-nth-point tracking-spline ((obj tracking-spline) (arg0 int)) (if (= arg0 (-> obj used-point)) (format 0 "u") @@ -241,6 +860,8 @@ (none) ) +;; definition for method 12 of type tracking-spline +;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-12 tracking-spline ((obj tracking-spline)) (let ((s5-0 (-> obj used-point))) (while (!= s5-0 -134250495) @@ -253,6 +874,8 @@ (none) ) +;; definition for method 23 of type tracking-spline +;; INFO: Return type mismatch int vs none. (defmethod TODO-RENAME-23 tracking-spline ((obj tracking-spline)) (let ((s5-0 (-> obj used-point)) (s4-0 (-> obj point (-> obj used-point) next)) @@ -301,6 +924,7 @@ (none) ) +;; definition for function debug-euler (defun debug-euler ((arg0 cam-dbg-scratch)) (let ((s4-0 (new 'stack-no-clear 'euler-angles)) (gp-0 (new 'stack-no-clear 'matrix)) @@ -395,6 +1019,7 @@ ) ) +;; definition for function bike-cam-limit (defun bike-cam-limit ((arg0 float)) (let* ((f0-1 (* 10012.444 arg0)) (f30-0 (fmax 0.0 f0-1)) @@ -406,6 +1031,181 @@ ) ) +;; definition for function camera-slave-debug +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defun camera-slave-debug ((arg0 camera-slave)) + (when *display-camera-marks* + (let ((f30-0 (* 0.5 (-> *camera-combiner* fov)))) + (camera-fov-frame + (-> *camera-combiner* inv-camera-rot) + (camera-pos) + f30-0 + 0.75 + 1.0 + (new 'static 'vector4w :z #xff :w #x80) + ) + ) + (cond + ((= (-> arg0 blend-to-type) 2) + (let ((f0-2 (* 0.5 (-> arg0 fov)))) + (camera-fov-frame + (the-as matrix (-> *camera-combiner* tracking)) + (-> arg0 trans) + f0-2 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80) + ) + ) + ) + (else + (let ((f0-4 (* 0.5 (-> arg0 fov)))) + (camera-fov-frame + (the-as matrix (-> arg0 tracking)) + (-> arg0 trans) + f0-4 + 0.75 + 1.0 + (new 'static 'vector4w :y #xff :w #x80) + ) + ) + ) + ) + (TODO-RENAME-23 (-> arg0 position-spline)) + (let ((s5-1 (new-stack-vector0))) + (let ((s4-1 (new-stack-vector0))) + (new-stack-matrix0) + (cond + ((or (= (-> arg0 next-state name) 'cam-fixed) (or (= (-> arg0 next-state name) 'cam-eye) + (= (-> arg0 next-state name) 'cam-point-watch) + (= (-> arg0 next-state name) 'cam-free-floating) + (= (-> arg0 next-state name) 'cam-orbit) + ) + ) + (vector+float*! s5-1 (-> arg0 trans) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 trans) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ((= (-> arg0 blend-to-type) 2) + (camera-line + (-> *camera-combiner* tracking follow-pt) + (-> arg0 trans) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (vector+float*! s5-1 (-> *camera-combiner* tracking follow-pt) (-> *camera* local-down) 4096.0) + (camera-line + (-> *camera-combiner* tracking follow-pt) + s5-1 + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + ) + (else + (camera-line + (-> arg0 tracking follow-pt) + (-> arg0 trans) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (vector+float*! s5-1 (-> arg0 tracking follow-pt) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 tracking follow-pt) s5-1 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ) + (set! (-> s4-1 quad) (-> arg0 trans quad)) + (cond + ((= (-> arg0 blend-to-type) 2) + (vector+float*! s5-1 s4-1 (the-as vector (-> *camera-combiner* tracking)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s5-1 s4-1 (-> *camera-combiner* tracking inv-mat vector 1) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s5-1 s4-1 (-> *camera-combiner* tracking inv-mat vector 2) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) + ) + (else + (vector+float*! s5-1 s4-1 (the-as vector (-> arg0 tracking)) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s5-1 s4-1 (-> arg0 tracking inv-mat vector 1) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s5-1 s4-1 (-> arg0 tracking inv-mat vector 2) 2048.0) + (camera-line s4-1 s5-1 (new 'static 'vector4w :z #xff :w #x80)) + ) + ) + ) + (vector--float*! s5-1 (-> *camera* tpos-curr) (-> *camera* local-down) (-> *camera* foot-offset)) + (camera-sphere s5-1 512.0 (the-as vector (new 'static 'vector4w :y #xff :w #x80))) + (vector--float*! s5-1 (-> *camera* tpos-curr) (-> *camera* local-down) (-> *camera* head-offset)) + (camera-sphere s5-1 512.0 (the-as vector (new 'static 'vector4w :y #xff :w #x80))) + ) + (cond + ((= (-> arg0 next-state name) 'cam-string) + (camera-sphere (-> arg0 desired-pos) 512.0 (the-as vector (new 'static 'vector4w :z #xff :w #x80))) + (camera-line-rel (-> *camera* tpos-curr-adj) (-> arg0 view-flat) (new 'static 'vector4w :z #xff :w #x80)) + (camera-line + (-> arg0 string-trans) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :y #xff :w #x80) + ) + (camera-line + (-> arg0 los-last-pos) + (the-as vector (+ (the-as uint (-> *camera* target-spline)) (* 48 (-> arg0 los-tgt-spline-pt)))) + (new 'static 'vector4w :x #xff :w #x80) + ) + ) + ((= (-> arg0 next-state name) 'cam-circular) + (let ((s5-2 (new-stack-vector0))) + (vector+float*! s5-2 (-> arg0 pivot-pt) (-> *camera* local-down) 4096.0) + (camera-line (-> arg0 pivot-pt) s5-2 (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + (camera-line (-> arg0 pivot-pt) (-> arg0 trans) (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + ) + ((= (-> arg0 next-state name) 'cam-spline) + (let ((s5-3 (new 'stack 'curve)) + (s4-2 (res-lump-struct (-> arg0 cam-entity) 'spline-offset structure)) + ) + (if (not s4-2) + (set! s4-2 (new-stack-vector0)) + ) + (when (get-curve-data! (-> arg0 cam-entity) s5-3 'campath 'campath-k -1000000000.0) + (let ((s3-0 (new-stack-vector0)) + (s2-0 (new-stack-vector0)) + (gp-1 (res-lump-data (-> arg0 cam-entity) 'campoints pointer :time 1.0)) + ) + (curve-get-pos! s2-0 0.0 s5-3) + (vector+! s2-0 s2-0 (the-as vector s4-2)) + (dotimes (s1-0 8) + (set! (-> s3-0 quad) (-> s2-0 quad)) + (curve-get-pos! s2-0 (* 0.125 (the float (+ s1-0 1))) s5-3) + (vector+! s2-0 s2-0 (the-as vector s4-2)) + (camera-line s3-0 s2-0 (new 'static 'vector4w :x #xff :y #xff :w #x80)) + ) + (dotimes (s1-1 (-> s5-3 num-cverts)) + (vector+! s3-0 (-> s5-3 cverts s1-1) (the-as vector s4-2)) + (vector+! s2-0 (-> s5-3 cverts (mod (+ s1-1 1) (-> s5-3 num-cverts))) (the-as vector s4-2)) + (camera-line s3-0 s2-0 (new 'static 'vector4w :y #xff :z #xff :w #x80)) + ) + (if gp-1 + (camera-line + (the-as vector (&+ gp-1 0)) + (the-as vector (&+ gp-1 16)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + (camera-line + (-> s5-3 cverts 0) + (-> s5-3 cverts (+ (-> s5-3 num-cverts) -1)) + (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80) + ) + ) + ) + ) + ) + ) + ) + ) + 0 + (none) + ) + +;; definition for function master-draw-coordinates +;; INFO: Return type mismatch int vs none. +;; Used lq/sq (defun master-draw-coordinates ((arg0 vector)) (let ((s5-0 (new-stack-vector0)) (gp-0 (new-stack-vector0)) @@ -471,6 +1271,7 @@ (none) ) +;; definition of type cam-collision-record (deftype cam-collision-record (structure) ((pos vector :inline :offset-assert 0) (vel vector :inline :offset-assert 16) @@ -493,7 +1294,28 @@ :flag-assert #x9000000a8 ) +;; definition for method 3 of type cam-collision-record +(defmethod inspect cam-collision-record ((obj cam-collision-record)) + (format #t "[~8x] ~A~%" obj 'cam-collision-record) + (format #t "~Tpos: #~%" (-> obj pos)) + (format #t "~Tvel: #~%" (-> obj vel)) + (format #t "~Tdesired-pos: #~%" (-> obj desired-pos)) + (format #t "~Tcam-tpos-cur: #~%" (-> obj cam-tpos-cur)) + (format #t "~Tcam-tpos-old: #~%" (-> obj cam-tpos-old)) + (format #t "~Tview-flat: #~%" (-> obj view-flat)) + (format #t "~Tstring-min-val: #~%" (-> obj string-min-val)) + (format #t "~Tstring-max-val: #~%" (-> obj string-max-val)) + (format #t "~Tview-off: #~%" (-> obj view-off)) + (format #t "~Tmin-z-override: ~f~%" (-> obj min-z-override)) + (format #t "~Tstring-push-z: ~f~%" (-> obj string-push-z)) + (format #t "~Tview-off-param: ~f~%" (-> obj view-off-param)) + (format #t "~Tframe: ~D~%" (-> obj frame)) + (format #t "~Titeration: ~D~%" (-> obj iteration)) + (format #t "~Tmove-type: ~A~%" (-> obj move-type)) + obj + ) +;; definition of type cam-collision-record-array (deftype cam-collision-record-array (inline-array-class) ((data cam-collision-record :dynamic :offset-assert 16) ) @@ -502,17 +1324,33 @@ :flag-assert #x900000010 ) +;; definition for method 3 of type cam-collision-record-array +(defmethod inspect cam-collision-record-array ((obj cam-collision-record-array)) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~Tlength: ~D~%" (-> obj length)) + (format #t "~Tallocated-length: ~D~%" (-> obj allocated-length)) + (format #t "~Tdata[0] @ #x~X~%" (-> obj data)) + obj + ) +;; failed to figure out what this is: (set! (-> cam-collision-record-array heap-base) (the-as uint 176)) +;; definition for symbol *cam-collision-record-first*, type int (define *cam-collision-record-first* 0) +;; definition for symbol *cam-collision-record-last*, type int (define *cam-collision-record-last* 0) +;; definition for symbol *cam-collision-record-show*, type int (define *cam-collision-record-show* 0) +;; definition for symbol *cam-collision-record*, type cam-collision-record-array (define *cam-collision-record* (new 'debug 'cam-collision-record-array 600)) +;; definition for function cam-collision-record-save +;; INFO: Return type mismatch int vs none. +;; Used lq/sq (defun cam-collision-record-save ((arg0 vector) (arg1 vector) (arg2 int) (arg3 symbol) (arg4 camera-slave)) (when *record-cam-collide-history* (let ((v1-5 (the-as @@ -530,7 +1368,7 @@ (set! (-> v1-5 string-min-val quad) (-> arg4 string-min-val quad)) (set! (-> v1-5 string-max-val quad) (-> arg4 string-max-val quad)) (set! (-> v1-5 view-off quad) (-> arg4 view-off quad)) - (set! (-> v1-5 frame) (-> *display* base-frame-counter)) + (set! (-> v1-5 frame) (the-as int (-> *display* base-frame-counter))) (set! (-> v1-5 iteration) arg2) (set! (-> v1-5 move-type) arg3) (set! (-> v1-5 min-z-override) (-> arg4 min-z-override)) @@ -549,6 +1387,8 @@ (none) ) +;; definition for function cam-collision-record-step +;; INFO: Return type mismatch int vs none. (defun cam-collision-record-step ((arg0 int)) (set! *cam-collision-record-show* (+ *cam-collision-record-show* arg0)) (while (>= *cam-collision-record-show* 600) @@ -561,6 +1401,8 @@ (none) ) +;; definition for function cam-collision-record-draw +;; INFO: Return type mismatch int vs none. (defun cam-collision-record-draw () (cond ((cpad-pressed? 0 down) @@ -665,6 +1507,70 @@ (none) ) +;; definition for function camera-master-debug +;; INFO: Return type mismatch int vs none. +(defun camera-master-debug ((arg0 camera-master)) + (when *display-cam-other* + (let ((f0-1 (* 0.5 (-> *camera-other-fov* data)))) + (camera-fov-frame + *camera-other-matrix* + *camera-other-trans* + f0-1 + 0.75 + 1.0 + (new 'static 'vector4w :x #xff :w #x80) + ) + ) + (camera-line *camera-other-trans* *camera-other-root* (new 'static 'vector4w :x #xff :y #xff :z #xff :w #x80)) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s5-0 *camera-other-trans*) + ) + (vector+float*! s4-0 s5-0 (the-as vector (-> *camera-other-matrix* vector)) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :x #xff :w #x80)) + (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 1) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :y #xff :w #x80)) + (vector+float*! s4-0 s5-0 (-> *camera-other-matrix* vector 2) 2048.0) + (camera-line s5-0 s4-0 (new 'static 'vector4w :z #xff :w #x80)) + ) + ) + (when *display-camera-last-attacker* + (format *stdcon* "last attacker '") + (let ((v1-12 (handle->process (-> last-try-to-look-at-data who)))) + (if v1-12 + (format *stdcon* "~S" (-> v1-12 name)) + ) + ) + (format *stdcon* "'~%") + ) + (when *display-camera-old-stats* + (format + *stdcon* + "old ~S cpu ~D old vu ~D (go to menu before comparing)~%" + *camera-old-level* + *camera-old-cpu* + *camera-old-vu* + ) + (format *stdcon* "old tfrag-mem ~D~%" (sar *camera-old-tfrag-bytes* 10)) + (format *stdcon* "~S~%" *camera-old-stat-string-tfrag-near*) + (format *stdcon* "~S~%" *camera-old-stat-string-tfrag*) + (format *stdcon* "~S~%" *camera-old-stat-string-total*) + ) + (if *display-cam-collide-history* + (cam-collision-record-draw) + ) + (if *display-cam-master-marks* + (TODO-RENAME-23 (-> arg0 target-spline)) + ) + (if *display-xyz-axes* + (master-draw-coordinates (the-as vector #f)) + ) + (cam-debug-draw-tris) + 0 + (none) + ) + +;; definition for function debug-set-camera-pos-rot! +;; Used lq/sq (defun debug-set-camera-pos-rot! ((arg0 vector) (arg1 matrix)) (when (and *camera* *camera-combiner*) (send-event *camera* 'change-state cam-free-floating 0) @@ -685,6 +1591,9 @@ arg0 ) +;; definition for function external-cam-reset! +;; INFO: Return type mismatch int vs none. +;; Used lq/sq (defun external-cam-reset! () (vector-reset! (-> *math-camera* trans)) (matrix-identity! (-> *math-camera* inv-camera-rot)) @@ -711,3 +1620,7 @@ + + + + diff --git a/goal_src/engine/camera/pov-camera-h.gc b/goal_src/engine/camera/pov-camera-h.gc index 907cfead1d..6b70f5aa5b 100644 --- a/goal_src/engine/camera/pov-camera-h.gc +++ b/goal_src/engine/camera/pov-camera-h.gc @@ -5,22 +5,32 @@ ;; name in dgo: pov-camera-h ;; dgos: GAME, ENGINE -;; for target-death +(defenum pov-camera-flag + :bitfield #t + :type int32 + (notify-of-abort 0) + (allow-abort 1) + (inherit-orientation 2) + ) + (declare-type pov-camera process-drawable) -(define-extern pov-camera-init-by-other (function vector skeleton-group string int process-drawable pair none :behavior pov-camera)) ;; TODO - not confirmed -- sunken-elevator +(define-extern pov-camera-init-by-other (function vector skeleton-group string pov-camera-flag process-drawable pair none :behavior pov-camera)) ;; TODO - not confirmed -- sunken-elevator ;; DECOMP BEGINS +;; The pov-camera is used to move the camera around for the not-quite-cutscenes. +;; for example, the introduction to orbs in geyser, or the camera that shows you where the steps to fire canyon +;; are. (deftype pov-camera (process-drawable) - ((cspace-array cspace-array :offset 112) - (flags int32 :offset-assert 176) - (debounce-start-time time-frame :offset-assert 184) - (notify-handle handle :offset-assert 192) - (anim-name string :offset-assert 200) - (command-list pair :offset-assert 204) - (mask-to-clear uint32 :offset-assert 208) - (music-volume-movie float :offset-assert 212) - (sfx-volume-movie float :offset-assert 216) + ((cspace-array cspace-array :offset 112) + (flags pov-camera-flag :offset-assert 176) + (debounce-start-time time-frame :offset-assert 184) + (notify-handle handle :offset-assert 192) + (anim-name string :offset-assert 200) + (command-list pair :offset-assert 204) + (mask-to-clear uint32 :offset-assert 208) + (music-volume-movie float :offset-assert 212) + (sfx-volume-movie float :offset-assert 216) ) :heap-base #x70 :method-count-assert 30 @@ -32,9 +42,9 @@ (pov-camera-playing () _type_ :state 22) (pov-camera-start-playing () _type_ :state 23) (pov-camera-startup () _type_ :state 24) - (TODO-RENAME-25 (_type_) symbol 25) + (check-for-abort (_type_) symbol 25) (target-grabbed? (_type_) symbol 26) - (dummy-27 () none 27) + (pre-startup-callback (_type_) none 27) (target-released? () symbol 28) (set-stack-size! (_type_) none 29) ) diff --git a/goal_src/engine/camera/pov-camera.gc b/goal_src/engine/camera/pov-camera.gc index 8d0922816f..104bbd18a5 100644 --- a/goal_src/engine/camera/pov-camera.gc +++ b/goal_src/engine/camera/pov-camera.gc @@ -7,29 +7,34 @@ ;; DECOMP BEGINS -(defmethod TODO-RENAME-25 pov-camera ((obj pov-camera)) + +;; definition for method 25 of type pov-camera +(defmethod check-for-abort pov-camera ((obj pov-camera)) (when (or (and (>= (- (-> *display* base-frame-counter) (-> obj debounce-start-time)) (seconds 0.2)) (cpad-pressed? 0 triangle) ) - (logtest? (-> obj flags) 2) + (logtest? (-> obj flags) (pov-camera-flag allow-abort)) ) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) - (when (logtest? (-> obj flags) 1) + (when (logtest? (-> obj flags) (pov-camera-flag notify-of-abort)) (send-event (handle->process (-> obj notify-handle)) 'notify 'abort-request) #t ) ) ) +;; definition for method 26 of type pov-camera (defmethod target-grabbed? pov-camera ((obj pov-camera)) (or (not *target*) (process-grab? *target*)) ) +;; definition for method 28 of type pov-camera (defmethod target-released? pov-camera () (or (not *target*) (process-release? *target*)) ) +;; failed to figure out what this is: (defstate pov-camera-startup (pov-camera) :virtual #t :code @@ -39,6 +44,7 @@ ) ) +;; failed to figure out what this is: (defstate pov-camera-start-playing (pov-camera) :virtual #t :code @@ -71,6 +77,8 @@ ) ) +;; definition for function pov-camera-play-and-reposition +;; INFO: Return type mismatch int vs none. (defbehavior pov-camera-play-and-reposition pov-camera ((arg0 art-joint-anim) (arg1 vector) (arg2 float)) (let ((s4-0 #f)) (let ((v1-2 (-> self skel root-channel 0))) @@ -113,14 +121,15 @@ (none) ) +;; failed to figure out what this is: (defstate pov-camera-playing (pov-camera) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('abort) - (when (logtest? (-> self flags) 1) - (logior! (-> self flags) 2) + (when (logtest? (-> self flags) (pov-camera-flag notify-of-abort)) + (logior! (-> self flags) (pov-camera-flag allow-abort)) (if (= (-> self anim-name type) string) (go-virtual pov-camera-abort) ) @@ -178,7 +187,7 @@ ) ) (until (ja-done? 0) - (TODO-RENAME-25 self) + (check-for-abort self) (suspend) (let ((a0-6 (-> self skel root-channel 0))) (set! (-> a0-6 param 0) (the float (+ (-> a0-6 frame-group data 0 length) -1))) @@ -192,7 +201,7 @@ (the-as spool-anim (-> self anim-name)) (the-as art-joint-anim #f) (the-as art-joint-anim #f) - (method-of-object self TODO-RENAME-25) + (method-of-object self check-for-abort) ) ) ) @@ -209,11 +218,12 @@ ) ) +;; failed to figure out what this is: (defstate pov-camera-abort (pov-camera) :virtual #t :enter (behavior () - (logior! (-> self flags) 2) + (logior! (-> self flags) (pov-camera-flag allow-abort)) (none) ) :code @@ -226,6 +236,7 @@ ) ) +;; failed to figure out what this is: (defstate pov-camera-done-playing (pov-camera) :virtual #t :code @@ -236,22 +247,29 @@ (send-event (handle->process (-> self notify-handle)) 'notify 'die) (suspend) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) ) -(defmethod dummy-27 pov-camera () +;; definition for method 27 of type pov-camera +;; INFO: Return type mismatch int vs none. +(defmethod pre-startup-callback pov-camera ((obj pov-camera)) 0 (none) ) +;; definition for method 29 of type pov-camera +;; INFO: Return type mismatch symbol vs none. (defmethod set-stack-size! pov-camera ((obj pov-camera)) (none) ) -(defbehavior pov-camera-init-by-other pov-camera ((arg0 vector) (arg1 skeleton-group) (arg2 string) (arg3 int) (arg4 process-drawable) (arg5 pair)) +;; definition for function pov-camera-init-by-other +;; INFO: Return type mismatch object vs none. +;; Used lq/sq +(defbehavior pov-camera-init-by-other pov-camera ((arg0 vector) (arg1 skeleton-group) (arg2 string) (arg3 pov-camera-flag) (arg4 process-drawable) (arg5 pair)) (set-stack-size! self) (set! (-> *game-info* pov-camera-handle) (process->handle self)) (set! (-> self flags) arg3) @@ -266,7 +284,7 @@ (logclear! (-> self mask) (process-mask actor-pause movie enemy platform projectile)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg0 quad)) - (when (logtest? (-> self flags) 4) + (when (logtest? (-> self flags) (pov-camera-flag inherit-orientation)) (let ((v1-20 (if (and (nonzero? arg4) (type-type? (-> arg4 type) process-drawable)) arg4 ) @@ -276,7 +294,7 @@ ) ) (initialize-skeleton self arg1 '()) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (logior! (-> self skel status) 1) (set! (-> self anim-name) arg2) (cond @@ -321,7 +339,7 @@ ) ) ) - ((method-of-object self dummy-27)) + (pre-startup-callback self) (go-virtual pov-camera-startup) (none) ) diff --git a/goal_src/engine/collide/collide-cache.gc b/goal_src/engine/collide/collide-cache.gc index 93ec127b5c..1bc1017e8d 100644 --- a/goal_src/engine/collide/collide-cache.gc +++ b/goal_src/engine/collide/collide-cache.gc @@ -113,8 +113,10 @@ (set! (-> *collide-list* num-items) 0) + ;; HACK: the special case collide-probe-make-list function doesn't always work correctly. + ;; for example, on the little side thing in FJ it totally misses. (cond - ((= bsp-find-mesh-func (method-of-type bsp-header collide-ray)) + (#f ;; (= bsp-find-mesh-func (method-of-type bsp-header collide-ray)) ;; for collide-ray (actually line-sphere), we have a fancy version. (dotimes (s4-1 (-> *level* length)) (let ((a0-2 (-> *level* level s4-1))) diff --git a/goal_src/engine/collide/collide-mesh-h.gc b/goal_src/engine/collide/collide-mesh-h.gc index b62ea81692..6df3dd1e62 100644 --- a/goal_src/engine/collide/collide-mesh-h.gc +++ b/goal_src/engine/collide/collide-mesh-h.gc @@ -13,6 +13,7 @@ ;;;;;;;;;;;;;;;;;;;; ;; The triangle involved in collision +;; Note: this is reused for the background collision system. (deftype collide-tri-result (structure) ((vertex vector 3 :inline :offset-assert 0) (intersect vector :inline :offset-assert 48) @@ -28,7 +29,7 @@ ;; static mesh data ;;;;;;;;;;;;;;;;;;;; -;; A triangle, part of the collision mesh. +;; A triangle, part of a foreground collision mesh. ;; The vertex indices index into the collide-mesh vertex-data array. ;; Due to using uint8's you only get 256 vertices. (deftype collide-mesh-tri (structure) @@ -61,8 +62,8 @@ (should-push-away-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 11) ;; spat (sphere-on-platform-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 12) ;; sopt (populate-cache! (_type_ collide-mesh-cache-tri matrix) none 13) - (dummy-14 (_type_ object object) none 14) - (dummy-15 (_type_ object object object) none 15) + (collide-mesh-math-1 (_type_ object object) none 14) + (collide-mesh-math-2 (_type_ object object object) none 15) ) ) @@ -70,7 +71,9 @@ ;; cache ;;;;;;;;;;;;;;;;;;;; -;; the use of the cache is currently unknown. +;; this is not the main collide cache, but instead a smaller cache for unpacking and +;; transforming foreground meshes. It's not useful when filling/probing the real collide-cache, +;; but is useful for the "loop through all the things that aren't me and see if I collide" (defconstant COLLIDE_MESH_CACHE_SIZE #xa000) diff --git a/goal_src/engine/data/art-h.gc b/goal_src/engine/data/art-h.gc index 0ca1b96b50..a1b4ed6241 100644 --- a/goal_src/engine/data/art-h.gc +++ b/goal_src/engine/data/art-h.gc @@ -178,7 +178,7 @@ ;; joint animation. (deftype art-joint-anim (art-element) ;; figured out manually from custom inspect. - ((_unknown (pointer int16) :offset 4) ;; no clue. used in mem-usage + ((_unknown (pointer int16) :offset 4) ;; no clue. used in mem-usage (maybe merc eye data.) (speed float :offset 20) (artist-base float :offset 24) (artist-step float :offset 28) @@ -291,19 +291,22 @@ ) ) +;; the draw statuses are somewhat confusing, as some are set by the engine +;; and some are set by the game object code. (defenum draw-status :type uint8 :bitfield #t - (needs-clip 0) - (drwf01 1) ;; hide - (drwf02 2) ;; no-anim - (drwf03 3) ;; draw - (drwf04 4) - (drwf05 5) ;; no bones - (drwf06 6) ;; don't use for closest check - (drwf07 7) + (needs-clip 0) ;; set by engine, determines if object should be clipped + (hidden 1) ;; set by user, can disable drawing and animation codes + (no-anim 2) ;; set by engine, if there is no active joint animation + (was-drawn 3) ;; set by engine, if we were drawn (passed cull checks) + (no-skeleton-update 4) ;; set by engine, if our transforms are not valid + (skip-bones 5) ;; set by user, skips call to draw-bones but does everything else + (do-not-check-distance 6) ;; set by user, ignore in finding closest object for texture calcs + (has-joint-channels 7) ;; set by engine, if the object has joint channels. ) +;; only title seems to be used? (defenum draw-effect :type uint8 (drweff0 0) @@ -319,6 +322,9 @@ (declare-type ripple-control basic) (declare-type shadow-geo basic) (declare-type shadow-control basic) + +;; the actual draw-control - this is just a collection of references to all info +;; needed to do drawing. (deftype draw-control (basic) ((status draw-status :offset-assert 4) (matrix-type uint8 :offset-assert 5) @@ -366,13 +372,14 @@ :flag-assert #xc000000bc (:methods (new (symbol type process art-joint-geo) _type_ 0) - (dummy-9 (_type_) vector 9) + (get-skeleton-origin (_type_) vector 9) (lod-set! (_type_ int) none 10) (lods-assign! (_type_ lod-set) none 11) ) ) -(defmethod dummy-9 draw-control ((obj draw-control)) +(defmethod get-skeleton-origin draw-control ((obj draw-control)) + "Get the origin of the skeleton. Must have up-to-date bones." (-> obj skeleton bones 0 position) ) diff --git a/goal_src/engine/data/res-h.gc b/goal_src/engine/data/res-h.gc index 2e30761a28..d78b5dbcf1 100644 --- a/goal_src/engine/data/res-h.gc +++ b/goal_src/engine/data/res-h.gc @@ -7,17 +7,21 @@ ;; res is the very generic resource storage system. See res.gc for more information. +;; the res-tag describes some data (deftype res-tag (uint128) - ((name symbol :offset 0) - (key-frame float :offset 32) - (elt-type type :offset 64) - (data-offset uint16 :offset 96) ;; guess - (elt-count uint32 :offset 112 :size 15) - (inlined? uint8 :offset 127 :size 1) ;; guess. + ((name symbol :offset 0) ;; name used for lookups + (key-frame float :offset 32) ;; if it has a time value associated with it + (elt-type type :offset 64) ;; the type of the data stored + (data-offset uint16 :offset 96) ;; offset to our data within our lump + (elt-count uint32 :offset 112 :size 15) ;; if we're an array + (inlined? uint8 :offset 127 :size 1) ;; if our data is an inline array or not. ) :flag-assert #x900000010 ) +;; the indices of two res tags. If the specific key-frame time is in between two +;; res-tags, this type is used to return the indices of the first res tag before and after +;; the specified time. (deftype res-tag-pair (uint64) ((lo int32 :offset 0) (hi int32 :offset 32) @@ -25,6 +29,8 @@ ;; made-up type ) +;; a res-lump is a collection of res-tags and the associated data. +;; it's used as the base type for entities where the res stores various parameters. (deftype res-lump (basic) ((length int32 :offset-assert 4) (allocated-length int32 :offset-assert 8) diff --git a/goal_src/engine/data/res.gc b/goal_src/engine/data/res.gc index 8dfb7775e1..ff4adace3f 100644 --- a/goal_src/engine/data/res.gc +++ b/goal_src/engine/data/res.gc @@ -5,8 +5,6 @@ ;; name in dgo: res ;; dgos: GAME, ENGINE -;; TODO! Needs a lot of 128-bit type support for res-tag - #| res is a generic storage system for not very large data, used mostly for the game entities. These res files store collections of data, which can be as values (int8, int16, int32, int64, uint8, uint16, uint32, uint64, float, vector), or any structure (as references), which are tagged and identified with a res-tag. diff --git a/goal_src/engine/debug/debug-h.gc b/goal_src/engine/debug/debug-h.gc index 4cb051d1f8..c636aef4d5 100644 --- a/goal_src/engine/debug/debug-h.gc +++ b/goal_src/engine/debug/debug-h.gc @@ -8,6 +8,7 @@ ;; TODO - for anim-tester (define-extern *debug-menu-context* debug-menu-context) +;; circular buffer of positions to draw. (deftype pos-history (structure) ((points (inline-array vector) :offset-assert 0) (num-points int32 :offset-assert 4) @@ -19,6 +20,7 @@ :flag-assert #x900000010 ) +;; unused vertex type? (deftype debug-vertex (structure) ((trans vector4w :inline :offset-assert 0) (normal vector3h :inline :offset-assert 16) @@ -30,6 +32,7 @@ :flag-assert #x900000020 ) +;; buffer of debug vertices (unused?) (deftype debug-vertex-stats (basic) ((length int32 :offset-assert 4) (pos-count int32 :offset-assert 8) diff --git a/goal_src/engine/draw/drawable.gc b/goal_src/engine/draw/drawable.gc index 68273fc457..ca7c395dc3 100644 --- a/goal_src/engine/draw/drawable.gc +++ b/goal_src/engine/draw/drawable.gc @@ -518,8 +518,8 @@ ) (init-vf0-vector) (set! sv-16 arg0) - (logclear! (-> arg1 status) (draw-status drwf03)) - (when (zero? (logand (-> arg1 status) (draw-status drwf01 drwf02 drwf04))) + (logclear! (-> arg1 status) (draw-status was-drawn)) + (when (zero? (logand (-> arg1 status) (draw-status hidden no-anim no-skeleton-update))) (let ((s4-0 (the-as vector (+ 48 (the-as int (scratchpad-object int))))) (s2-0 (the-as vu-lights (+ 64 (the-as int (scratchpad-object int))))) (s3-0 *time-of-day-context*) @@ -717,7 +717,7 @@ (let ((v1-64 (-> arg1 sink-group level)) (a0-26 (+ (-> arg1 sink-group merc-sink foreground-texture-page) 6)) ) - (when (zero? (logand (-> arg1 status) (draw-status drwf06))) + (when (zero? (logand (-> arg1 status) (draw-status do-not-check-distance))) (if (< cam-dist (-> v1-64 closest-object a0-26)) (set! (-> v1-64 closest-object a0-26) cam-dist) ) @@ -744,13 +744,13 @@ (logior! (-> arg1 status) (draw-status needs-clip)) (logclear! (-> arg1 status) (draw-status needs-clip)) ) - (logior! (-> arg1 status) (draw-status drwf03)) - (if (logtest? (-> arg1 status) (draw-status drwf05)) + (logior! (-> arg1 status) (draw-status was-drawn)) + (if (logtest? (-> arg1 status) (draw-status skip-bones)) (return #f) ) (draw-bones arg1 arg3 cam-dist) ) - (when (and (< lod-to-use (-> arg1 cur-lod)) (logtest? (-> arg1 status) (draw-status drwf07))) + (when (and (< lod-to-use (-> arg1 cur-lod)) (logtest? (-> arg1 status) (draw-status has-joint-channels))) (let ((v1-82 *matrix-engine*)) (set! (-> v1-82 (-> v1-82 length)) (process->handle sv-16)) (+! (-> v1-82 length) 1) @@ -778,8 +778,8 @@ (set-vector! (-> *hud-lights* ambient) 0.5 0.5 0.5 1.0) (defun dma-add-process-drawable-hud ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) - (logclear! (-> arg1 status) (draw-status drwf03)) - (when (zero? (logand (-> arg1 status) (draw-status drwf01 drwf02 drwf04))) + (logclear! (-> arg1 status) (draw-status was-drawn)) + (when (zero? (logand (-> arg1 status) (draw-status hidden no-anim no-skeleton-update))) (let ((v1-6 (the-as vu-lights (+ 64 (scratchpad-object int)))) (a0-3 *hud-lights*) ) @@ -792,7 +792,7 @@ (set! (-> v1-6 ambient quad) (-> a0-3 ambient quad)) ) (lod-set! arg1 0) - (logior! (-> arg1 status) (draw-status drwf03)) + (logior! (-> arg1 status) (draw-status was-drawn)) (draw-bones-hud arg1 arg3) ) 0 diff --git a/goal_src/engine/draw/process-drawable.gc b/goal_src/engine/draw/process-drawable.gc index 2f052bcde9..0f1c99abd2 100644 --- a/goal_src/engine/draw/process-drawable.gc +++ b/goal_src/engine/draw/process-drawable.gc @@ -290,7 +290,7 @@ (defmethod do-joint-math! process-drawable ((obj process-drawable)) (cond - ((logtest? (-> obj draw status) (draw-status drwf01 drwf02)) + ((logtest? (-> obj draw status) (draw-status hidden no-anim)) ) ((zero? (-> obj skel)) (matrix<-transformq+trans! @@ -369,7 +369,7 @@ (none) ) -(defmethod dummy-18 process-drawable ((obj process-drawable)) +(defmethod cleanup-for-death process-drawable ((obj process-drawable)) (if (type-type? (-> obj root type) collide-shape) (clear-collide-with-as (the-as collide-shape (-> obj root))) ) @@ -481,7 +481,7 @@ (set! s3-0 v0-3) ) (let ((v1-26 s3-0)) - (set! (-> v1-26 status) (draw-status drwf04)) + (set! (-> v1-26 status) (draw-status no-skeleton-update)) (set! (-> v1-26 art-group) s4-0) (set! (-> v1-26 jgeo) (the-as art-joint-geo sv-16)) (set! (-> v1-26 force-lod) -1) @@ -542,7 +542,7 @@ (let ((a2-10 (res-lump-value (-> sv-16 extra) 'joint-channel int :default (the-as uint128 6)))) (cond ((> a2-10 0) - (logior! (-> s3-0 status) (draw-status drwf07)) + (logior! (-> s3-0 status) (draw-status has-joint-channels)) (let ((v0-13 (new 'process 'joint-control a2-10))) (set! (-> obj skel) v0-13) (let ((s2-1 v0-13)) @@ -612,7 +612,7 @@ obj ) -(defmethod dummy-16 process-drawable ((obj process-drawable) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) +(defmethod apply-alignment process-drawable ((obj process-drawable) (arg0 int) (arg1 transformq) (arg2 vector)) (when (logtest? arg0 7) (let* ((body-T-world (quaternion->matrix (new 'stack-no-clear 'matrix) (-> obj root quat))) (world-T-body (matrix-transpose! (new 'stack-no-clear 'matrix) body-T-world)) @@ -623,7 +623,7 @@ (set-vector! grav-rt-body 0.0 0.0 0.0 1.0) ) (when (logtest? arg0 1) - (set! (-> vel-rt-body x) (+ (* (-> arg1 0 x) (-> arg2 x) (-> *display* frames-per-second)) + (set! (-> vel-rt-body x) (+ (* (-> arg1 trans x) (-> arg2 x) (-> *display* frames-per-second)) (* (-> grav-rt-body x) (-> *display* seconds-per-frame)) ) ) @@ -631,14 +631,14 @@ (set! (-> vel-rt-body z) 0.0) ) ) - (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 0 y) 0.0)))) - (set! (-> vel-rt-body y) (+ (* (-> arg1 0 y) (-> arg2 y) (-> *display* frames-per-second)) + (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 trans y) 0.0)))) + (set! (-> vel-rt-body y) (+ (* (-> arg1 trans y) (-> arg2 y) (-> *display* frames-per-second)) (* (-> grav-rt-body y) (-> *display* seconds-per-frame)) ) ) ) (when (logtest? arg0 4) - (set! (-> vel-rt-body z) (+ (* (-> arg1 0 z) (-> arg2 z) (-> *display* frames-per-second)) + (set! (-> vel-rt-body z) (+ (* (-> arg1 trans z) (-> arg2 z) (-> *display* frames-per-second)) (* (-> grav-rt-body z) (-> *display* seconds-per-frame)) ) ) @@ -650,7 +650,7 @@ ) ) (if (logtest? arg0 16) - (quaternion-normalize! (quaternion*! (-> obj root quat) (-> obj root quat) (the-as quaternion (-> arg1 1)))) + (quaternion-normalize! (quaternion*! (-> obj root quat) (-> obj root quat) (-> arg1 quat))) ) (the-as collide-shape (-> obj root)) ) @@ -902,12 +902,12 @@ ) ;; ERROR: function was not converted to expressions. Cannot decompile. -(defmethod dummy-19 process-drawable ((obj process-drawable)) +(defmethod evaluate-joint-control process-drawable ((obj process-drawable)) (local-vars (s7-0 none) (ra-0 int)) (let ((gp-0 (-> obj skel))) (label cfg-1) (let ((s4-0 (-> gp-0 active-channels))) - (b! (logtest? (-> obj draw status) (draw-status drwf01)) cfg-27) + (b! (logtest? (-> obj draw status) (draw-status hidden)) cfg-27) (let ((s3-0 0)) (b! #t cfg-13 :delay (nop!)) (label cfg-3) @@ -947,7 +947,7 @@ (set! (-> gp-0 channel v1-26 frame-interp) (fmax 0.0 (fmin 1.0 (-> gp-0 channel v1-26 frame-interp)))) ) (if (or (zero? s4-0) (not (-> gp-0 root-channel 0 frame-group))) - (logior! (-> obj draw status) (draw-status drwf02)) + (logior! (-> obj draw status) (draw-status no-anim)) ) ) (if (logtest? (-> obj skel status) 72) @@ -969,10 +969,10 @@ (defbehavior ja-post process-drawable () (when (nonzero? (-> self draw)) - (let ((gp-1 (logtest? (-> self draw status) (draw-status drwf04)))) - (logclear! (-> self draw status) (draw-status drwf02 drwf04)) + (let ((gp-1 (logtest? (-> self draw status) (draw-status no-skeleton-update)))) + (logclear! (-> self draw status) (draw-status no-anim no-skeleton-update)) (when (nonzero? (-> self skel)) - (dummy-19 self) + (evaluate-joint-control self) diff --git a/goal_src/engine/engine/engines.gc b/goal_src/engine/engine/engines.gc index 878cda13ca..bcc034c518 100644 --- a/goal_src/engine/engine/engines.gc +++ b/goal_src/engine/engine/engines.gc @@ -8,10 +8,18 @@ ;; Allocate some engines. +;; engine for drawing level backgrounds. (define *background-draw-engine* (new 'global 'engine 'draw 10)) + +;; The matrix engine is not actually an engine, but instead an array of handles to processes that +;; need to have their joint math done and bones updated. (define *matrix-engine* (new 'global 'boxed-array handle 1024)) (set! (-> *matrix-engine* length) 0) + +;; the camera engine contains all currently running camera entities. (define *camera-engine* (new 'global 'engine 'camera-eng 128)) + +;; the debug engine is rarely used, but it allows you to add code to the debug hook for a process. (if *debug-segment* (define *debug-engine* (new 'debug 'engine 'debug 512)) ) diff --git a/goal_src/engine/entity/entity.gc b/goal_src/engine/entity/entity.gc index 263c722dac..8990e0dbbb 100644 --- a/goal_src/engine/entity/entity.gc +++ b/goal_src/engine/entity/entity.gc @@ -1651,7 +1651,7 @@ (vector-vector-distance (-> obj root trans) (math-camera-pos)) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/goal_src/engine/game/collectables.gc b/goal_src/engine/game/collectables.gc index 9f3013514b..1c5e6f02d7 100644 --- a/goal_src/engine/game/collectables.gc +++ b/goal_src/engine/game/collectables.gc @@ -1172,13 +1172,13 @@ (defmethod run-logic? money ((obj money)) (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) + (logtest? (-> obj draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -1466,7 +1466,7 @@ ) (when (nonzero? (-> self part)) (cond - ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) + ((logtest? (-> self draw status) (draw-status hidden no-anim)) (kill-and-free-particles (-> self part)) (if (nonzero? (-> self sound)) (kill-and-free-particles (-> self part)) @@ -1655,7 +1655,7 @@ (when (and (logtest? (-> self skel status) 32) (and (>= (ja-aframe-num 0) f30-0) (-> self state-object))) (set! (-> self state-object) #f) (kill-and-free-particles (-> self part)) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (if (not (or (logtest? (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) 4096 @@ -1675,7 +1675,7 @@ (sound-play-by-name (static-sound-name "pu-powercell") (new-sound-id) 1024 0 0 1 #t) (clear-collide-with-as (-> self root-override)) (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (process-entity-status! self (entity-perm-status dead) #t) (stop! (-> self sound)) (while (handle->process (-> *game-info* other-camera-handle)) @@ -2200,7 +2200,7 @@ (let ((v1-20 (-> self skel root-channel 0))) (set! (-> v1-20 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (vector-reset! (-> self draw origin)) (go-virtual wait) ) diff --git a/goal_src/engine/game/crates.gc b/goal_src/engine/game/crates.gc index 132182f6a3..eb4b3ba9ff 100644 --- a/goal_src/engine/game/crates.gc +++ b/goal_src/engine/game/crates.gc @@ -578,7 +578,7 @@ (case (-> arg3 param 1) (('explode 'darkeco 'eco-yellow 'bonk 'tube 'flut-bonk 'flut-attack 'racer) (send-event arg0 'get-attack-count 1) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (increment-success-for-hint (game-text-id sidekick-speech-hint-crate-steel)) (level-hint-spawn (game-text-id sidekick-speech-crate-steel-break1) @@ -919,7 +919,7 @@ (suspend) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (case (-> self look) (('iron) (sound-play-by-name (static-sound-name "icrate-break") (new-sound-id) 1024 0 0 1 #t) @@ -1097,7 +1097,7 @@ ) ) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (drop-pickup (-> self fact) #t self (the-as fact-info #f) 0) (set! (-> self child-count) (+ (process-count self) -1)) (process-entity-status! self (entity-perm-status bit-4) #t) @@ -1235,23 +1235,23 @@ ) (('none) (initialize-skeleton obj *crate-wood-sg* '()) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) ) (else (initialize-skeleton obj *crate-wood-sg* '()) ) ) (cond - ((logtest? (fact-options fop16) (-> obj fact options)) + ((logtest? (fact-options indestructible) (-> obj fact options)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense indestructible)) ) - ((logtest? (-> obj fact options) (fact-options fop15)) + ((logtest? (-> obj fact options) (fact-options strong-attack)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense strong-attack)) ) - ((logtest? (-> obj fact options) (fact-options fop14)) + ((logtest? (-> obj fact options) (fact-options normal-attack)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense normal-attack)) ) - ((logtest? (-> obj fact options) (fact-options fop13)) + ((logtest? (-> obj fact options) (fact-options touch)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense touch)) ) ) diff --git a/goal_src/engine/game/fact-h.gc b/goal_src/engine/game/fact-h.gc index 5c47e88e14..3c51e0a467 100644 --- a/goal_src/engine/game/fact-h.gc +++ b/goal_src/engine/game/fact-h.gc @@ -69,11 +69,11 @@ :bitfield #t :type uint64 (vent-blocked 0) - (fop1 1) + (has-power-cell 1) ;; should spawn power cell on death (vent-valve 2) - (fop3 3) - (fop4 4) - (fop5 5) + (wrap-phase 3) ;; phase should wrap from 1 to 0 instead of mirroring. + (fop4 4) ;; unused? + (fop5 5) ;; wait-for-cue after death? (fop6 6) (fop7 7) (can-collect 8) @@ -81,16 +81,19 @@ (large 10) (fop11 11) (powerup 12) - (fop13 13) - (fop14 14) - (fop15 15) - (fop16 16) - (fop17 17) + ;; strengths + (touch 13) + (normal-attack 14) + (strong-attack 15) + (indestructible 16) + + (fop17 17) ;; unused (eco-blocked 18) (respawn 19) ) -;; Each individual enemy and pickup process will allocate a fact-info on its process heap +;; Each individual enemy and pickup process will allocate a fact-info on its process heap. +;; The constructor will read the res-lump stored in the entity to pick reasonable defaults. ;; The settings may be different per object - for example some eco pickups may have different ;; amounts or timings ;; The fact-info class stores data that is common to all fact-infos. @@ -206,8 +209,8 @@ ;; read the options (set! (-> obj options) (res-lump-value ent 'options fact-options)) - ;; TODO - some enum bitfield here. - (if (nonzero? (logand #x80200 (the-as int (-> obj options)))) + ;; read fade time, if we have fade or respawn + (if (logtest? (fact-options fade respawn) (-> obj options)) (set! (-> obj fade-time) (the int (* 300.0 (res-lump-float ent 'timeout)))) ) ) diff --git a/goal_src/engine/game/game-h.gc b/goal_src/engine/game/game-h.gc index 287b0ec0ed..0a6c12fc6b 100644 --- a/goal_src/engine/game/game-h.gc +++ b/goal_src/engine/game/game-h.gc @@ -19,21 +19,54 @@ ;; DECOMP BEGINS + +;; Process drawable is the parent type of most game objects. (deftype process-drawable (process) + ;; The "root" is the location of the process-drawable. + ;; It may be a more specific type, and often contains the collision geometry. ((root trsqv :offset-assert 112) + + ;; The node-list is a list of all the joints and bones, and how + ;; joints update bones. (node-list cspace-array :offset-assert 116) + + ;; the draw-control contains references to all data required for drawing (draw draw-control :offset-assert 120) + + ;; The skel is a joint-control which combines animations to control joints (skel joint-control :offset-assert 124) + + ;; The nav-control allows enemies to navigate on a nav mesh. (nav nav-control :offset-assert 128) + + ;; alignment of animation to our position (align align-control :offset-assert 132) + + ;; our path (like if we are a platform or enemy that moves along a fixed path) (path path-control :offset-assert 136) + + ;; associated volumes (for water) (vol vol-control :offset-assert 140) + + ;; our settings (fact fact-info :offset-assert 144) + + ;; reference to our entity (link actor-link-info :offset-assert 148) + + ;; our particles (part sparticle-launch-control :offset-assert 152) + + ;; state related to entering and being in water (water water-control :offset-assert 156) + + ;; any sound that we're playing (sound ambient-sound :offset-assert 160) + + ;; seems to only be used in target? (state-flags uint32 :offset-assert 164) + + ;; the time when we last did something. Used for different things in different objects (state-time time-frame :offset-assert 168) ) :heap-base #x40 @@ -43,10 +76,10 @@ (:methods (initialize-skeleton (_type_ skeleton-group pair) none 14) (initialize-skeleton-by-name (_type_ string object) _type_ 15) - (dummy-16 (_type_ int (inline-array vector) vector) collide-shape 16) + (apply-alignment (_type_ int transformq vector) collide-shape 16) (do-joint-math! (_type_) none 17) - (dummy-18 (_type_) none 18) - (dummy-19 (_type_) none 19) + (cleanup-for-death (_type_) none 18) + (evaluate-joint-control (_type_) none 19) ) (:states (process-drawable-art-error string) @@ -54,7 +87,8 @@ ) ) - +;; This is unused. Maybe it was useful in development, where it might be slow to add +;; methods to a type? (deftype process-drawable-reserved (process-drawable) () :heap-base #x40 @@ -108,14 +142,14 @@ ) ) - +;; The attack-info is generated by attackers and sent to target. (deftype attack-info (structure) ((trans vector :inline :offset-assert 0) (vector vector :inline :offset-assert 16) (intersection vector :inline :offset-assert 32) (attacker handle :offset-assert 48) (invinc-time time-frame :offset-assert 56) - (mask uint32 :offset-assert 64) + (mask uint32 :offset-assert 64) ;; todo enum here. (mode symbol :offset-assert 68) (shove-back meters :offset-assert 72) (shove-up meters :offset-assert 76) @@ -130,7 +164,7 @@ :size-assert #x68 :flag-assert #xa00000068 (:methods - (dummy-9 (_type_ attack-info) none 9) + (combine! (_type_ attack-info) none 9) ) ) diff --git a/goal_src/engine/game/game-info-h.gc b/goal_src/engine/game/game-info-h.gc index dcfcd5168d..7d4b67abd7 100644 --- a/goal_src/engine/game/game-info-h.gc +++ b/goal_src/engine/game/game-info-h.gc @@ -5,6 +5,11 @@ ; ;; name in dgo: game-info-h ; ;; dgos: GAME, ENGINE +;; This file contains types for: +;; - the full game state (game-info) +;; - the "load state" +;; - checkpoints + ;; Game parameters. (deftype game-bank (basic) ((life-max-default float :offset-assert 4) ;; yes this life system works, but does nothing diff --git a/goal_src/engine/game/generic-obs-h.gc b/goal_src/engine/game/generic-obs-h.gc index ab79ebd2d5..6bc962148d 100644 --- a/goal_src/engine/game/generic-obs-h.gc +++ b/goal_src/engine/game/generic-obs-h.gc @@ -31,6 +31,10 @@ ;; DECOMP BEGINS +;; generic-obs has general game "objects". It's not related to the generic renderer. + +;; A manipy is a way to draw and move something. More complicated objects that want to draw multiple +;; things may create a child manipy and then send it commands. (deftype manipy (process-drawable) ((new-trans-hook (function none) :offset-assert 176) (cur-trans-hook (function none) :offset-assert 180) @@ -57,7 +61,7 @@ ) ) - +;; A part-spawner simply spawns particles. (deftype part-spawner (process-drawable) ((mode (pointer sparticle-launch-group) :offset-assert 176) (enable symbol :offset-assert 180) @@ -69,14 +73,15 @@ :size-assert #xd0 :flag-assert #x15006000d0 (:methods - (dummy-20 (_type_) symbol 20) + (is-visible? (_type_) symbol 20) ) (:states part-spawner-active ) ) - +;; a part-tracker will spawn particles, then linger for a bit, and then finally die. +;; a more complicated object can use this to manage particles that do something interesting (like follow you) (deftype part-tracker (process) ((root trsqv :offset-assert 112) (part sparticle-launch-control :offset-assert 116) @@ -101,7 +106,7 @@ ) ) - +;; a camera-tracker can control the camera. (deftype camera-tracker (process) ((entity-override entity-actor :offset 52) (grab-target handle :offset 120) @@ -129,14 +134,14 @@ :size-assert #xe0 :flag-assert #xf007000e0 (:methods - (dummy-14 (_type_ pair) process 14) + (eval (_type_ pair) process 14) ) (:states camera-tracker-process ) ) - +;; a touch tracker waits to be touched, then calls some callback function. (deftype touch-tracker (process-drawable) ((root-override collide-shape-moving :offset 112) (duration time-frame :offset-assert 176) @@ -155,7 +160,7 @@ ) ) - +;; the classic pole (deftype swingpole (process) ((root trsq :offset-assert 112) (dir vector :inline :offset-assert 128) @@ -172,7 +177,7 @@ ) ) - +;; do you want to fish? (deftype gui-query (structure) ((x-position int32 :offset-assert 0) (y-position int32 :offset-assert 4) @@ -192,7 +197,7 @@ ) ) - +;; control the camera from something else (an animation) (deftype othercam (process) ((hand handle :offset-assert 112) (old-global-mask uint32 :offset-assert 120) @@ -216,6 +221,7 @@ ) +;; don't draw it! I guess used to disable things during development. (deftype process-hidden (process) () :method-count-assert 15 diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index edf6ec2617..012a9a54d5 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -50,9 +50,9 @@ (if (logtest? (-> (the-as process-drawable s5-0) skel status) 32) (logior! (-> self skel status) 32) ) - (logclear! (-> self draw status) (draw-status drwf01 drwf02)) + (logclear! (-> self draw status) (draw-status hidden no-anim)) (if (not (-> self skel root-channel 0 frame-group)) - (logior! (-> self draw status) (draw-status drwf02)) + (logior! (-> self draw status) (draw-status no-anim)) ) (let* ((s5-1 self) (v1-37 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) manipy)) @@ -61,7 +61,7 @@ ) ) (if (and manipy (not (-> (the-as manipy v1-37) draw?))) - (logior! (-> self draw status) (draw-status drwf02)) + (logior! (-> self draw status) (draw-status no-anim)) ) ) (do-joint-math! self) @@ -78,7 +78,7 @@ ) ) (else - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (ja-post) ) ) @@ -335,8 +335,8 @@ (set! (-> self draw?) (the-as symbol (-> arg3 param 0))) (cond ((-> arg3 param 0) - (let ((v1-47 (logtest? (-> self draw status) (draw-status drwf01)))) - (logclear! (-> self draw status) (draw-status drwf01)) + (let ((v1-47 (logtest? (-> self draw status) (draw-status hidden)))) + (logclear! (-> self draw status) (draw-status hidden)) (when v1-47 (cond ((nonzero? (-> self skel)) @@ -355,7 +355,7 @@ ) ) (else - (set! v0-0 (the-as none (logior (-> self draw status) (draw-status drwf01)))) + (set! v0-0 (the-as none (logior (-> self draw status) (draw-status hidden)))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) @@ -959,7 +959,7 @@ ) ) -(defmethod dummy-14 camera-tracker ((obj camera-tracker) (arg0 pair)) +(defmethod eval camera-tracker ((obj camera-tracker) (arg0 pair)) (with-pp (let ((gp-0 (the-as object #f))) (cond @@ -973,15 +973,15 @@ (('print) (set! gp-0 (car s4-0)) (if (pair? gp-0) - (set! gp-0 (dummy-14 obj (the-as pair gp-0))) + (set! gp-0 (eval obj (the-as pair gp-0))) ) (format #t "~A MESSAGE (~D): ~A~%" obj (-> *display* base-frame-counter) gp-0) ) (('while) (let ((s3-0 (car s4-0))) - (while (dummy-14 obj (the-as pair s3-0)) + (while (eval obj (the-as pair s3-0)) (let* ((s2-0 (cdr s4-0)) (a1-3 (car s2-0))) (while (not (null? s2-0)) - (set! gp-0 (dummy-14 obj (the-as pair a1-3))) + (set! gp-0 (eval obj (the-as pair a1-3))) (set! s2-0 (cdr s2-0)) (set! a1-3 (car s2-0)) ) @@ -991,9 +991,9 @@ ) (('until) (let ((s3-1 (car s4-0))) - (while (not (dummy-14 obj (the-as pair s3-1))) + (while (not (eval obj (the-as pair s3-1))) (let* ((s2-1 (cdr s4-0)) (a1-5 (car s2-1))) (while (not (null? s2-1)) - (set! gp-0 (dummy-14 obj (the-as pair a1-5))) + (set! gp-0 (eval obj (the-as pair a1-5))) (set! s2-1 (cdr s2-1)) (set! a1-5 (car s2-1)) ) @@ -1002,7 +1002,7 @@ ) ) (('not) - (set! gp-0 (not (dummy-14 obj (the-as pair (car s4-0))))) + (set! gp-0 (not (eval obj (the-as pair (car s4-0))))) ) (('wait-for 'wait 'suspend) (let ((s5-1 (command-get-time (car s4-0) 1)) @@ -1047,7 +1047,7 @@ ) ) (('work-set!) - (set! gp-0 (process->handle (dummy-14 obj (the-as pair (car s4-0))))) + (set! gp-0 (process->handle (eval obj (the-as pair (car s4-0))))) (set! (-> obj work-process) (the-as handle gp-0)) ) (('grab) @@ -1183,7 +1183,7 @@ ) (else (while (not (null? (-> self script-line))) - (dummy-14 self (the-as pair (-> self script-line car))) + (eval self (the-as pair (-> self script-line car))) (set! (-> self script-line) (the-as pair (-> self script-line cdr))) ) ) @@ -1271,7 +1271,7 @@ ) (cond ((and a0-1 (or (= (-> a0-1 display?) 'special) (= (-> a0-1 display?) 'special-vis))) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (when (nonzero? (-> self skel)) (let ((a0-5 (-> self skel root-channel 0))) (set! (-> a0-5 param 0) 1.0) @@ -1280,13 +1280,13 @@ ) ) ((or (and a0-1 (= (-> a0-1 status) 'active)) (= v1-3 'firecanyon)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) ((and (= (-> self level) 'firecanyon) (< (-> (camera-pos) y) 327680.0)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) (else - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (if (nonzero? (-> self part)) (spawn (-> self part) (-> self root trans)) ) @@ -1299,7 +1299,7 @@ ) ) ) - (when (zero? (logand (-> self draw status) (draw-status drwf01))) + (when (zero? (logand (-> self draw status) (draw-status hidden))) (let ((v1-36 (-> self draw)) (a0-18 (new 'stack-no-clear 'vector)) ) @@ -1377,7 +1377,7 @@ ) ) (initialize-skeleton-by-name obj *lev-string* '()) - (logior! (-> obj draw status) (draw-status drwf06)) + (logior! (-> obj draw status) (draw-status do-not-check-distance)) (if (nonzero? (-> obj draw)) (go med-res-level-idle) ) @@ -1386,7 +1386,7 @@ (none) ) -(defmethod dummy-20 part-spawner ((obj part-spawner)) +(defmethod is-visible? part-spawner ((obj part-spawner)) (sphere<-vector+r! (-> obj world-sphere) (-> obj root trans) (-> obj radius)) (sphere-in-view-frustum? (-> obj world-sphere)) ) diff --git a/goal_src/engine/game/powerups.gc b/goal_src/engine/game/powerups.gc index c461010bf1..1a05e3a145 100644 --- a/goal_src/engine/game/powerups.gc +++ b/goal_src/engine/game/powerups.gc @@ -673,7 +673,7 @@ ) (when (and (< 0.0 (-> self fact-info-target eco-level)) (zero? (logand (-> self state-flags) 512)) - (zero? (logand (-> self draw status) (draw-status drwf01 drwf02))) + (zero? (logand (-> self draw status) (draw-status hidden no-anim))) (not (movie?)) (rand-vu-percent? (lerp-scale diff --git a/goal_src/engine/game/projectiles.gc b/goal_src/engine/game/projectiles.gc index db87e6e6a7..6186323b80 100644 --- a/goal_src/engine/game/projectiles.gc +++ b/goal_src/engine/game/projectiles.gc @@ -72,7 +72,7 @@ (if (logtest? (process-mask enemy) (-> s5-0 mask)) (set! s4-2 (logior s4-2 1)) ) - (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status drwf03))) + (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status was-drawn))) (set! s4-2 (logior s4-2 2)) ) (let ((a0-16 (logand s4-2 (-> gp-0 mask)))) @@ -885,7 +885,7 @@ (send-event (-> v1-0 process 0) 'notify 'die) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -1292,7 +1292,7 @@ :virtual #t :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/engine/game/task/process-taskable.gc b/goal_src/engine/game/task/process-taskable.gc index a26322a3a8..1ca15fdaa9 100644 --- a/goal_src/engine/game/task/process-taskable.gc +++ b/goal_src/engine/game/task/process-taskable.gc @@ -733,7 +733,7 @@ ) (defbehavior process-taskable-clean-up-after-talking process-taskable () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self skel status) (logand -2 (-> self skel status))) (clear-pending-settings-from-process *setting-control* self 'border-mode) (clear-pending-settings-from-process *setting-control* self 'talking) @@ -1431,7 +1431,7 @@ (defmethod draw-npc-shadow process-taskable ((obj process-taskable)) (let ((gp-0 (-> obj draw shadow-ctrl))) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) ;(dummy-15 gp-0 (-> obj draw origin) -4096.0 4096.0 32768.0) (dummy-14 gp-0) ) diff --git a/goal_src/engine/gfx/eye.gc b/goal_src/engine/gfx/eye.gc index f0966ddd8a..b889b76df1 100644 --- a/goal_src/engine/gfx/eye.gc +++ b/goal_src/engine/gfx/eye.gc @@ -818,7 +818,7 @@ ) (when (and v1-40 (logtest? (-> (the-as process-drawable v1-40) skel status) 256) - (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status drwf03)) + (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status was-drawn)) ) (when (-> s5-3 shaders) (when (not (paused?)) @@ -1116,115 +1116,115 @@ ) (defun merc-eye-anim ((arg0 manipy)) - (let* ((s5-0 (-> arg0 draw mgeo header eye-ctrl)) - (a0-1 (-> arg0 skel root-channel 0)) - (s4-0 (-> a0-1 frame-group)) - ) - (when (and (logtest? (-> arg0 skel status) 256) - (nonzero? s5-0) - (> (-> arg0 skel active-channels) 0) - s4-0 - (nonzero? (-> s4-0 _unknown)) - ) - (let* ((v1-15 (-> *eye-control-array* data (-> s5-0 eye-slot))) - (s3-1 (min (the int (-> a0-1 frame-num)) (-> s4-0 _unknown 0))) - (s2-1 (min (+ (the int (-> a0-1 frame-num)) 1) (-> s4-0 _unknown 0))) - (f0-4 (-> a0-1 frame-num)) - (f30-0 (- f0-4 (* (the float (the int (/ f0-4 1.0))) 1.0))) - ) - (set! (-> v1-15 process) (process->handle arg0)) - (set! (-> v1-15 shaders) (the-as (inline-array adgif-shader) (-> s5-0 iris-shader))) - (set! (-> v1-15 level) (the-as uint (-> (if (-> arg0 entity) - (-> arg0 entity extra level) - (-> *level* level-default) - ) - index - ) - ) - ) - (let ((s1-0 (new 'stack-no-clear 'box8s)) - (s0-0 (new 'stack-no-clear 'vector)) - ) - (cond - ((-> s4-0 _unknown) - (convert-eye-data - s1-0 - (the-as - uint128 - (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s3-1 2) 8))) 1) - ) - ) - (convert-eye-data - (the-as box8s s0-0) - (the-as - uint128 - (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s2-1 2) 8))) 1) - ) - ) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left)) (* 96 (-> s5-0 eye-slot)))) - (the-as vector (-> s1-0 data)) - (the-as vector (&-> s0-0 x)) - f30-0 - ) - (vector4-lerp! - (the-as vector (&+ (&-> *eye-control-array* data 0 left iris-scale) (* 96 (-> s5-0 eye-slot)))) - (-> s1-0 max) - (&+ s0-0 16) - f30-0 - ) - (convert-eye-data - s1-0 - (the-as - uint128 - (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s3-1 2) 1) 8))) 1) - ) - ) - (convert-eye-data - (the-as box8s s0-0) - (the-as - uint128 - (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s2-1 2) 1) 8))) 1) - ) - ) - (vector4-lerp! - (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right)) (* 96 (-> s5-0 eye-slot)))) - (the-as vector (-> s1-0 data)) - (the-as vector (&-> s0-0 x)) - f30-0 - ) - (vector4-lerp! - (the-as vector (&+ (&-> *eye-control-array* data 0 right iris-scale) (* 96 (-> s5-0 eye-slot)))) - (-> s1-0 max) - (&+ s0-0 16) - f30-0 - ) - ) - (else - (let ((v1-37 (-> *eye-control-array* data (-> s5-0 eye-slot)))) - (set! (-> v1-37 left x) 0.0) - (set! (-> v1-37 left y) 0.0) - (set! (-> v1-37 left lid) -1.0) - (set! (-> v1-37 left iris-scale) 1.0) - (set! (-> v1-37 left pupil-scale) 1.0) - (set! (-> v1-37 left lid-scale) 1.0) - (set! (-> v1-37 right x) 0.0) - (set! (-> v1-37 right y) 0.0) - (set! (-> v1-37 right lid) -1.0) - (set! (-> v1-37 right iris-scale) 1.0) - (set! (-> v1-37 right pupil-scale) 1.0) - (set! (-> v1-37 right lid-scale) 1.0) - ) - ) - ) - ) - ) - (logior! (-> arg0 skel status) 128) - ) - ) - (if (logtest? (-> arg0 skel status) 128) - (set! (-> arg0 skel status) (logand -129 (-> arg0 skel status))) - ) + ; (let* ((s5-0 (-> arg0 draw mgeo header eye-ctrl)) + ; (a0-1 (-> arg0 skel root-channel 0)) + ; (s4-0 (-> a0-1 frame-group)) + ; ) + ; (when (and (logtest? (-> arg0 skel status) 256) + ; (nonzero? s5-0) + ; (> (-> arg0 skel active-channels) 0) + ; s4-0 + ; (nonzero? (-> s4-0 _unknown)) + ; ) + ; (let* ((v1-15 (-> *eye-control-array* data (-> s5-0 eye-slot))) + ; (s3-1 (min (the int (-> a0-1 frame-num)) (-> s4-0 _unknown 0))) + ; (s2-1 (min (+ (the int (-> a0-1 frame-num)) 1) (-> s4-0 _unknown 0))) + ; (f0-4 (-> a0-1 frame-num)) + ; (f30-0 (- f0-4 (* (the float (the int (/ f0-4 1.0))) 1.0))) + ; ) + ; (set! (-> v1-15 process) (process->handle arg0)) + ; (set! (-> v1-15 shaders) (the-as (inline-array adgif-shader) (-> s5-0 iris-shader))) + ; (set! (-> v1-15 level) (the-as uint (-> (if (-> arg0 entity) + ; (-> arg0 entity extra level) + ; (-> *level* level-default) + ; ) + ; index + ; ) + ; ) + ; ) + ; (let ((s1-0 (new 'stack-no-clear 'box8s)) + ; (s0-0 (new 'stack-no-clear 'vector)) + ; ) + ; (cond + ; ((-> s4-0 _unknown) + ; (convert-eye-data + ; s1-0 + ; (the-as + ; uint128 + ; (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s3-1 2) 8))) 1) + ; ) + ; ) + ; (convert-eye-data + ; (the-as box8s s0-0) + ; (the-as + ; uint128 + ; (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (* s2-1 2) 8))) 1) + ; ) + ; ) + ; (vector4-lerp! + ; (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 left)) (* 96 (-> s5-0 eye-slot)))) + ; (the-as vector (-> s1-0 data)) + ; (the-as vector (&-> s0-0 x)) + ; f30-0 + ; ) + ; (vector4-lerp! + ; (the-as vector (&+ (&-> *eye-control-array* data 0 left iris-scale) (* 96 (-> s5-0 eye-slot)))) + ; (-> s1-0 max) + ; (&+ s0-0 16) + ; f30-0 + ; ) + ; (convert-eye-data + ; s1-0 + ; (the-as + ; uint128 + ; (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s3-1 2) 1) 8))) 1) + ; ) + ; ) + ; (convert-eye-data + ; (the-as box8s s0-0) + ; (the-as + ; uint128 + ; (-> (the-as (pointer int64) (&+ (the-as (pointer int64) (-> s4-0 _unknown)) (* (+ (* s2-1 2) 1) 8))) 1) + ; ) + ; ) + ; (vector4-lerp! + ; (the-as vector (+ (the-as uint (-> *eye-control-array* data 0 right)) (* 96 (-> s5-0 eye-slot)))) + ; (the-as vector (-> s1-0 data)) + ; (the-as vector (&-> s0-0 x)) + ; f30-0 + ; ) + ; (vector4-lerp! + ; (the-as vector (&+ (&-> *eye-control-array* data 0 right iris-scale) (* 96 (-> s5-0 eye-slot)))) + ; (-> s1-0 max) + ; (&+ s0-0 16) + ; f30-0 + ; ) + ; ) + ; (else + ; (let ((v1-37 (-> *eye-control-array* data (-> s5-0 eye-slot)))) + ; (set! (-> v1-37 left x) 0.0) + ; (set! (-> v1-37 left y) 0.0) + ; (set! (-> v1-37 left lid) -1.0) + ; (set! (-> v1-37 left iris-scale) 1.0) + ; (set! (-> v1-37 left pupil-scale) 1.0) + ; (set! (-> v1-37 left lid-scale) 1.0) + ; (set! (-> v1-37 right x) 0.0) + ; (set! (-> v1-37 right y) 0.0) + ; (set! (-> v1-37 right lid) -1.0) + ; (set! (-> v1-37 right iris-scale) 1.0) + ; (set! (-> v1-37 right pupil-scale) 1.0) + ; (set! (-> v1-37 right lid-scale) 1.0) + ; ) + ; ) + ; ) + ; ) + ; ) + ; (logior! (-> arg0 skel status) 128) + ; ) + ; ) + ; (if (logtest? (-> arg0 skel status) 128) + ; (set! (-> arg0 skel status) (logand -129 (-> arg0 skel status))) + ; ) 0 (none) ) diff --git a/goal_src/engine/gfx/lights.gc b/goal_src/engine/gfx/lights.gc index 62ce671ca5..945386ab04 100644 --- a/goal_src/engine/gfx/lights.gc +++ b/goal_src/engine/gfx/lights.gc @@ -41,6 +41,7 @@ ) (defun light-group-process! ((arg0 vu-lights) (arg1 light-group) (arg2 vector) (arg3 vector)) + "unused." (rotate-y<-vector+vector arg3 arg2) (vu-lights<-light-group! arg0 arg1) (none) diff --git a/goal_src/engine/gfx/shadow/shadow.gc b/goal_src/engine/gfx/shadow/shadow.gc index 1b13559b4b..15f19eb4fb 100644 --- a/goal_src/engine/gfx/shadow/shadow.gc +++ b/goal_src/engine/gfx/shadow/shadow.gc @@ -141,7 +141,7 @@ (!= (-> self control unknown-surface00 mode) 'swim) (!= (-> self control unknown-surface00 mode) 'dive) (!= (-> self next-state name) 'target-flop) - (zero? (logand (-> self draw status) (draw-status drwf01 drwf02 drwf05))) + (zero? (logand (-> self draw status) (draw-status hidden no-anim skip-bones))) ) (set! (-> self control shadow-pos quad) (-> self control trans quad)) (find-ground-and-draw-shadow diff --git a/goal_src/engine/gfx/tie/prototype-h.gc b/goal_src/engine/gfx/tie/prototype-h.gc index 2cee4734e9..ee1249b28c 100644 --- a/goal_src/engine/gfx/tie/prototype-h.gc +++ b/goal_src/engine/gfx/tie/prototype-h.gc @@ -5,16 +5,25 @@ ;; name in dgo: prototype-h ;; dgos: GAME, ENGINE +;; The "prototype" system is used for instanced background rendering (shrub and tie). + +;; The first type is the bucket. There's one bucket per prototype. Each prototype can have up to +;; 4 geometries (level of details). Lower numbers are higher detail. +;; During drawing, the engine will build linked lists of instance data. Each instance will pick +;; a geom, based on distance from the camera (or other settings) and will add itself to the list +;; for that geom. (deftype prototype-bucket (basic) ((name basic :offset-assert 4) (flags uint32 :offset-assert 8) (in-level uint16 :offset-assert 12) (utextures uint16 :offset-assert 14) - (geometry drawable 4 :offset-assert 16) - (dists vector :inline :offset-assert 32) - (rdists vector :inline :offset-assert 48) - (next uint32 4 :offset-assert 64) - (count uint16 4 :offset-assert 80) + (geometry drawable 4 :offset-assert 16) ;; the 4 levels of detail + (dists vector :inline :offset-assert 32) ;; lod settings + (rdists vector :inline :offset-assert 48) ;; lod settings + (next uint32 4 :offset-assert 64) ;; linked list of instances of each geom. + (count uint16 4 :offset-assert 80) ;; number of each instance with each geom. + + ;; overlays (near-plane meters :offset 32) (near-stiff meters :offset 36) (mid-plane meters :offset 40) @@ -31,6 +40,11 @@ :flag-assert #x900000058 ) +;;;;;;;;;;;;;;; +;; shrub +;;;;;;;;;;;;;;; + +;; specialization for shrub. We keep the end of the linked list too. (deftype prototype-bucket-shrub (prototype-bucket) ((mod-count uint16 4 :offset-assert 88) (last uint32 4 :offset-assert 96) @@ -41,6 +55,7 @@ :flag-assert #x900000070 ) +;; array of all the prototypes in a shrub tree. (deftype prototype-inline-array-shrub (drawable) ((length int16 :offset 6) (data prototype-bucket-shrub 1 :inline :offset 32) @@ -51,18 +66,7 @@ :flag-assert #x1200000094 ) -(defmethod - inspect - prototype-inline-array-shrub - ((obj prototype-inline-array-shrub)) - (format #t "[~8x] ~A~%" obj (-> obj type)) - (format #t "~Tid: ~D~%" (-> obj id)) - (format #t "~Tbsphere: ~`vector`P~%" (-> obj bsphere)) - (format #t "~Tlength: ~D~%" (-> obj length)) - (format #t "~Tdata[1] @ #x~X~%" (-> obj data)) - obj - ) - +;; shrub prototypes, plus a pointer to the level's wind data. (deftype prototype-array-shrub-info (basic) ((prototype-inline-array-shrub prototype-inline-array-shrub :offset-assert 4) (wind-vectors uint32 :offset-assert 8) @@ -72,8 +76,18 @@ :flag-assert #x90000000c ) +;;;;;;;;;;;;;;; +;; tie +;;;;;;;;;;;;;;; + +;; tie has a few special features: +;; - ability to output to generic (and env map) +;; - per-proto colors +;; - instanced collision + (declare-type drawable-inline-array-collide-fragment drawable-inline-array) (declare-type prototype-tie drawable) +;; prototype for a TIE (deftype prototype-bucket-tie (prototype-bucket) ((generic-count uint16 4 :offset-assert 88) (generic-next uint32 4 :offset-assert 96) @@ -96,6 +110,7 @@ :flag-assert #x900000094 ) +;; all tie prototypes in a tie tree. (note, not inline like shrub) (deftype prototype-array-tie (array) ((array-data prototype-bucket-tie :dynamic :offset 16) ) @@ -107,6 +122,8 @@ ) ) +;; all tie prototypes and pointer to level's wind data. +;; in practice, they are shared with all tie/shrub trees in the level (deftype proxy-prototype-array-tie (basic) ((prototype-array-tie prototype-array-tie :offset-assert 4) (wind-vectors uint32 :offset-assert 8) @@ -116,12 +133,18 @@ :flag-assert #x90000000c ) +;;;;;;;;;;;; +;; instance +;;;;;;;;;;;; + +;; note: more specific instances are available in tie/shrub files. + (deftype instance (drawable) - ((bucket-index uint16 :offset 6) - (error (pointer drawable-error) :offset 8) ;; - from default-menu::build-instance-list - (origin matrix4h :inline :offset-assert 32) ; TODO - this can also be a float, default-menu::lambda_62 - (unknown-vector vector :inline :offset 32) ;; todo, this might not be right. - (wind-index uint16 :offset 62) + ((bucket-index uint16 :offset 6) ;; which bucket (index in arrays) + (error (pointer drawable-error) :offset 8) ;; if we have an error. + (origin matrix4h :inline :offset-assert 32) ;; our location (packed format) + (unknown-vector vector :inline :offset 32) ;; todo, this might not be right. + (wind-index uint16 :offset 62) ;; used by wind calculation. ) :method-count-assert 18 :size-assert #x40 diff --git a/goal_src/engine/gfx/time-of-day.gc b/goal_src/engine/gfx/time-of-day.gc index 3ede73cae4..2e82caac45 100644 --- a/goal_src/engine/gfx/time-of-day.gc +++ b/goal_src/engine/gfx/time-of-day.gc @@ -572,8 +572,8 @@ (set! (-> *math-camera* fog-max) (-> arg0 current-fog fog-dists z)) (set! (-> *math-camera* fog-min) (-> arg0 current-fog fog-dists w)) - ;; interp target lights. - (let* ((v1-195 0 (-> *target* draw light-index)) ;; TODO + ;; interp target lights. (note: added check here.) + (let* ((v1-195 (if *target* (-> *target* draw light-index) 0)) (f30-1 (-> arg0 target-interp)) (s4-6 (-> arg0 light-group)) (s5-2 (-> arg0 light-group v1-195)) diff --git a/goal_src/engine/gfx/water/water.gc b/goal_src/engine/gfx/water/water.gc index f8d7e00af5..362de5170f 100644 --- a/goal_src/engine/gfx/water/water.gc +++ b/goal_src/engine/gfx/water/water.gc @@ -754,7 +754,7 @@ (set! (-> s4-0 quad) (-> obj bottom 0 quad)) (vector-xz-length (-> obj process root transv)) (set! (-> s4-0 y) (-> obj surface-height)) - (when (and (logtest? (-> obj process draw status) (draw-status drwf03)) + (when (and (logtest? (-> obj process draw status) (draw-status was-drawn)) (zero? (-> obj process draw cur-lod)) (logtest? #x400000 (-> obj flags)) (logtest? #x800000 (-> obj flags)) diff --git a/goal_src/engine/gfx/wind-h.gc b/goal_src/engine/gfx/wind-h.gc index 1896fa92f2..51ad5d39e8 100644 --- a/goal_src/engine/gfx/wind-h.gc +++ b/goal_src/engine/gfx/wind-h.gc @@ -5,6 +5,8 @@ ;; name in dgo: wind-h ;; dgos: GAME, ENGINE +;; These "wind" types are used in the tie/shrub renderers. + (deftype wind-vector (structure) ((wind-pos vector2w :inline :offset-assert 0) (wind-vel vector2w :inline :offset-assert 8) diff --git a/goal_src/engine/physics/dynamics-h.gc b/goal_src/engine/physics/dynamics-h.gc index 44989b929a..8e2c93a5d9 100644 --- a/goal_src/engine/physics/dynamics-h.gc +++ b/goal_src/engine/physics/dynamics-h.gc @@ -5,6 +5,7 @@ ;; name in dgo: dynamics-h ;; dgos: GAME, ENGINE +;; dyanamics contain gravity properties (deftype dynamics (basic) ((name basic :offset-assert 4) (gravity-max meters :offset-assert 8) @@ -20,13 +21,16 @@ ) (defun time-to-apex ((arg0 float) (arg1 float)) + "How many ticks it takes to reach the apex of a ballistic trajectory." (the int (/ arg0 (- (vel-tick arg1)))) ) (defun time-to-ground ((arg0 float) (arg1 float) (arg2 float)) + "How many ticks it takes to reach the ground for a ballistic trajectory." (let ((f0-0 0.0) (v0-0 0) ) + ;; actually integrate forward, just like the game will do so we're exact. (while (< (- arg2) f0-0) (set! arg0 (- arg0 (* 0.0033333334 arg1))) (+! f0-0 (* 0.0033333334 arg0)) @@ -36,6 +40,7 @@ ) ) +;; the default dynamics of the world. (define *standard-dynamics* (new 'static 'dynamics :name 'standard diff --git a/goal_src/engine/ps2/memcard-h.gc b/goal_src/engine/ps2/memcard-h.gc index c6a78efd75..933fd765ef 100644 --- a/goal_src/engine/ps2/memcard-h.gc +++ b/goal_src/engine/ps2/memcard-h.gc @@ -10,6 +10,7 @@ :flag-assert #x900000004 ) +;; Information sent from the C kernel about a file on a memory card (deftype mc-file-info (structure) ((present int32 :offset-assert 0) (blind-data float 16 :offset-assert 4) @@ -32,6 +33,9 @@ :flag-assert #x900000044 ) +;; Information sent from the C kernel about all the files on a memory card. +;; Note that the C kernel takes care of cleaning up all this, so in GOAL +;; we should assume that all this data is valid. (deftype mc-slot-info (structure) ((handle int32 :offset-assert 0) (known int32 :offset-assert 4) diff --git a/goal_src/engine/target/logic-target.gc b/goal_src/engine/target/logic-target.gc index 1b0b051257..9125ffd48b 100644 --- a/goal_src/engine/target/logic-target.gc +++ b/goal_src/engine/target/logic-target.gc @@ -1141,8 +1141,8 @@ ) (when (logtest? (-> self state-flags) 32) (if (< (logand (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) 3) 1) - (logior! (-> self draw status) (draw-status drwf01)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) + (logclear! (-> self draw status) (draw-status hidden)) ) (if (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) (-> self control unknown-dword81)) (target-timed-invulnerable-off self) @@ -1406,7 +1406,7 @@ (let ((gp-0 (new 'stack-no-clear 'vector))) (cond ((and (= (-> self next-state name) 'target-clone-anim) - (zero? (logand (-> self draw status) (draw-status drwf01))) + (zero? (logand (-> self draw status) (draw-status hidden))) (begin (vector<-cspace! gp-0 (-> self node-list data 3)) (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) @@ -1441,7 +1441,7 @@ ((logtest? (-> self control root-prim prim-core action) (collide-action ca-13)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad)) ) - ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) + ((logtest? (-> self draw status) (draw-status hidden no-anim)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) ) (else diff --git a/goal_src/engine/target/pat-h.gc b/goal_src/engine/target/pat-h.gc index 3949e8daf5..41fd516ac7 100644 --- a/goal_src/engine/target/pat-h.gc +++ b/goal_src/engine/target/pat-h.gc @@ -5,8 +5,8 @@ ;; name in dgo: pat-h ;; dgos: GAME, ENGINE -;; The "pat" system is used to classify terrain. -;; These are likely stored as part of the level data, so they are quite compact. +;; The "pat" system is used to store some data per triangle in collision meshes. +;; It packs all data into a 32-bit pat-surface type. (defenum pat-material :type uint8 diff --git a/goal_src/engine/target/surface-h.gc b/goal_src/engine/target/surface-h.gc index b8b898d034..8cb0cd8044 100644 --- a/goal_src/engine/target/surface-h.gc +++ b/goal_src/engine/target/surface-h.gc @@ -5,6 +5,9 @@ ;; name in dgo: surface-h ;; dgos: GAME, ENGINE +;; The "surface" defines how jak moves on the ground. It includes things like how fast he can go, +;; how slippery it is, and what functions should run when he hits it. +;; Note that "surface" can apply to weird things, like riding the zoomer or swimming as well. (deftype surface (basic) ((name symbol :offset-assert 4) ;; data went here diff --git a/goal_src/engine/target/target-death.gc b/goal_src/engine/target/target-death.gc index 429d0c87c3..486cebaf97 100644 --- a/goal_src/engine/target/target-death.gc +++ b/goal_src/engine/target/target-death.gc @@ -975,7 +975,7 @@ ) ) ) - (dummy-9 gp-0 arg1) + (combine! gp-0 arg1) (when (zero? (logand (-> gp-0 mask) 2)) (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) diff --git a/goal_src/engine/target/target-handler.gc b/goal_src/engine/target/target-handler.gc index e84a403521..6c20af63da 100644 --- a/goal_src/engine/target/target-handler.gc +++ b/goal_src/engine/target/target-handler.gc @@ -267,8 +267,8 @@ ) ((= v1-0 'draw) (if (-> arg3 param 0) - (logclear! (-> self draw status) (draw-status drwf05)) - (logior! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status skip-bones)) + (logior! (-> self draw status) (draw-status skip-bones)) ) (let ((v1-132 (new 'stack-no-clear 'event-message-block))) (set! (-> v1-132 from) arg0) @@ -1079,7 +1079,7 @@ target-standard-event-handler (set! (-> self water drip-mult) 1.0) (set! (-> self neck flex-blend) 1.0) (set! (-> self control unknown-float91) 0.0) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self skel status) (logand -33 (-> self skel status))) (set! (-> self control status) (logand -16385 (-> self control status))) 0 diff --git a/goal_src/engine/target/target-util.gc b/goal_src/engine/target/target-util.gc index 210ca48674..bba79ef3ad 100644 --- a/goal_src/engine/target/target-util.gc +++ b/goal_src/engine/target/target-util.gc @@ -663,7 +663,7 @@ ) ) -(defmethod dummy-16 target ((obj target) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) +(defmethod apply-alignment target ((obj target) (arg0 int) (arg1 transformq) (arg2 vector)) (let ((s2-0 (new 'stack-no-clear 'vector))) (set! (-> s2-0 quad) (-> arg2 quad)) (set! (-> s2-0 z) (target-align-vel-z-adjust (-> s2-0 z))) @@ -677,7 +677,7 @@ (set-vector! s1-0 0.0 0.0 0.0 1.0) ) (when (logtest? arg0 1) - (set! (-> a1-3 x) (+ (* (-> arg1 0 x) (-> s2-0 x) (-> *display* frames-per-second)) + (set! (-> a1-3 x) (+ (* (-> arg1 trans x) (-> s2-0 x) (-> *display* frames-per-second)) (* (-> s1-0 x) (-> *display* seconds-per-frame)) ) ) @@ -685,14 +685,14 @@ (set! (-> a1-3 z) 0.0) ) ) - (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 0 y) 0.0)))) - (set! (-> a1-3 y) (+ (* (-> arg1 0 y) (-> s2-0 y) (-> *display* frames-per-second)) + (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 trans y) 0.0)))) + (set! (-> a1-3 y) (+ (* (-> arg1 trans y) (-> s2-0 y) (-> *display* frames-per-second)) (* (-> s1-0 y) (-> *display* seconds-per-frame)) ) ) ) (when (logtest? arg0 4) - (set! (-> a1-3 z) (+ (* (-> arg1 0 z) (-> s2-0 z) (-> *display* frames-per-second)) + (set! (-> a1-3 z) (+ (* (-> arg1 trans z) (-> s2-0 z) (-> *display* frames-per-second)) (* (-> s1-0 z) (-> *display* seconds-per-frame)) ) ) @@ -705,16 +705,14 @@ ) ) (if (logtest? arg0 16) - (quaternion-normalize! (quaternion*! - (-> obj control unknown-quaternion00) - (-> obj control unknown-quaternion00) - (the-as quaternion (-> arg1 1)) - ) - ) + (quaternion-normalize! + (quaternion*! (-> obj control unknown-quaternion00) (-> obj control unknown-quaternion00) (-> arg1 quat)) + ) ) (the-as collide-shape (-> obj control)) ) + (defun average-turn-angle ((arg0 target)) (let ((f30-0 0.0)) (dotimes (s5-0 8) @@ -991,14 +989,14 @@ ) (defun target-timed-invulnerable-off ((arg0 target)) - (logclear! (-> arg0 draw status) (draw-status drwf01)) + (logclear! (-> arg0 draw status) (draw-status hidden)) (set! (-> arg0 state-flags) (logand -33 (-> arg0 state-flags))) (set-collide-kinds (-> arg0 control) 2 (collide-kind) (collide-kind target-attack)) 0 (none) ) -(defmethod dummy-9 attack-info ((obj attack-info) (arg0 attack-info)) +(defmethod combine! attack-info ((obj attack-info) (arg0 attack-info)) (with-pp (let ((s4-0 (-> arg0 mask))) (set! (-> obj mask) (-> arg0 mask)) diff --git a/goal_src/engine/target/target2.gc b/goal_src/engine/target/target2.gc index 8125984fcf..3bd2d72a56 100644 --- a/goal_src/engine/target/target2.gc +++ b/goal_src/engine/target/target2.gc @@ -3704,7 +3704,7 @@ (cond ((not (-> self control unknown-spoolanim00)) ) - ((zero? (logand (-> self draw status) (draw-status drwf01))) + ((zero? (logand (-> self draw status) (draw-status hidden))) (move-to-point! (-> self control) (the-as vector a1-2)) (matrix->quaternion (-> self control unknown-quaternion00) (-> gp-0 bone transform)) (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) diff --git a/goal_src/engine/util/sync-info-h.gc b/goal_src/engine/util/sync-info-h.gc index c61a198368..aff5761bd6 100644 --- a/goal_src/engine/util/sync-info-h.gc +++ b/goal_src/engine/util/sync-info-h.gc @@ -79,6 +79,7 @@ ) ) +;; second order oscillating float. (deftype oscillating-float (structure) ((value float :offset-assert 0) (target float :offset-assert 4) @@ -97,6 +98,7 @@ ) ) +;; float that "bounces". (deftype bouncing-float (structure) ((osc oscillating-float :inline :offset-assert 0) (max-value float :offset-assert 24) @@ -116,6 +118,7 @@ ) ) +;; like delayed-rand-float, but does 4 at a time. (deftype delayed-rand-vector (structure) ((min-time int32 :offset-assert 0) (max-time int32 :offset-assert 4) @@ -136,6 +139,7 @@ ) ) +;; like oscillating-float, but does 4 at a time. (deftype oscillating-vector (structure) ((value vector :inline :offset-assert 0) (target vector :inline :offset-assert 16) diff --git a/goal_src/levels/beach/beach-obs.gc b/goal_src/levels/beach/beach-obs.gc index 295900cadd..42d1b61ad2 100644 --- a/goal_src/levels/beach/beach-obs.gc +++ b/goal_src/levels/beach/beach-obs.gc @@ -897,7 +897,7 @@ :code (behavior () (clear-collide-with-as (-> self root-override)) - (while (or (logtest? (-> self draw status) (draw-status drwf03)) + (while (or (logtest? (-> self draw status) (draw-status was-drawn)) (and *target* (>= 204800.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) ) diff --git a/goal_src/levels/beach/beach-part.gc b/goal_src/levels/beach/beach-part.gc index 8677a5d3cd..fc086408e4 100644 --- a/goal_src/levels/beach/beach-part.gc +++ b/goal_src/levels/beach/beach-part.gc @@ -94,7 +94,7 @@ :code (behavior () (while #t - (when (dummy-20 self) + (when (is-visible? self) (let* ((gp-0 (camera-pos)) (f0-0 (vector-vector-distance (-> self root trans) gp-0)) ) diff --git a/goal_src/levels/beach/beach-rocks.gc b/goal_src/levels/beach/beach-rocks.gc index 27cfcca739..2771f07b38 100644 --- a/goal_src/levels/beach/beach-rocks.gc +++ b/goal_src/levels/beach/beach-rocks.gc @@ -366,7 +366,7 @@ (suspend) (set! v1-3 (or (not *target*) (process-grab? *target*))) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (ja-channel-set! 1) (let ((gp-0 (-> self skel root-channel 0))) (joint-control-channel-group-eval! diff --git a/goal_src/levels/beach/bird-lady.gc b/goal_src/levels/beach/bird-lady.gc index 722d4798d6..6c70edb591 100644 --- a/goal_src/levels/beach/bird-lady.gc +++ b/goal_src/levels/beach/bird-lady.gc @@ -47,7 +47,7 @@ (defmethod draw-npc-shadow bird-lady ((obj bird-lady)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -164,7 +164,7 @@ (set! (-> obj sound-flava) (music-flava birdlady)) (set! (-> obj draw light-index) (the-as uint 4)) (if (closed? (-> obj tasks) (game-task beach-flutflut) (task-status need-reminder)) - (dummy-18 obj) + (cleanup-for-death obj) (go (method-of-object obj idle)) ) (none) diff --git a/goal_src/levels/beach/lurkerworm.gc b/goal_src/levels/beach/lurkerworm.gc index d2a99f39c9..81ec92ed63 100644 --- a/goal_src/levels/beach/lurkerworm.gc +++ b/goal_src/levels/beach/lurkerworm.gc @@ -607,7 +607,7 @@ lurkerworm-default-post-behavior (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/beach/mayor.gc b/goal_src/levels/beach/mayor.gc index b219a06d99..cfa01e3021 100644 --- a/goal_src/levels/beach/mayor.gc +++ b/goal_src/levels/beach/mayor.gc @@ -44,7 +44,7 @@ (defmethod draw-npc-shadow mayor ((obj mayor)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/beach/pelican.gc b/goal_src/levels/beach/pelican.gc index 09e0106dd9..b9e2bf1f10 100644 --- a/goal_src/levels/beach/pelican.gc +++ b/goal_src/levels/beach/pelican.gc @@ -1011,7 +1011,7 @@ (defstate pelican-wait-at-end (pelican) :code (behavior ((arg0 symbol)) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/beach/sculptor.gc b/goal_src/levels/beach/sculptor.gc index 8d83c63748..b091cf691a 100644 --- a/goal_src/levels/beach/sculptor.gc +++ b/goal_src/levels/beach/sculptor.gc @@ -54,7 +54,7 @@ (defmethod draw-npc-shadow sculptor ((obj sculptor)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/citadel/citadel-obs.gc b/goal_src/levels/citadel/citadel-obs.gc index ccf3bcd714..233cd691a8 100644 --- a/goal_src/levels/citadel/citadel-obs.gc +++ b/goal_src/levels/citadel/citadel-obs.gc @@ -100,8 +100,8 @@ (vector-normalize! gp-0 1.0) (vector-normalize! s5-0 1.0) (if (>= (vector-dot gp-0 s5-0) (-> self cull-dot)) - (logior! (-> self draw status) (draw-status drwf01)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) + (logclear! (-> self draw status) (draw-status hidden)) ) (suspend) ) @@ -163,7 +163,7 @@ (the-as (function none :behavior citb-arm) rider-trans) :post (behavior () - (if (logtest? (-> self draw status) (draw-status drwf01)) + (if (logtest? (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-override)) (restore-collide-with-as (-> self root-override)) ) @@ -822,7 +822,7 @@ ) ) ((= arg2 'die) - (dummy-18 self) + (cleanup-for-death self) (the-as symbol (deactivate self)) ) ((or (= arg2 'touch) (= arg2 'attack)) @@ -1042,7 +1042,7 @@ (defstate citb-robotboss-die (citb-robotboss) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/goal_src/levels/citadel/citadel-sages.gc b/goal_src/levels/citadel/citadel-sages.gc index 1472187e3b..2671a61498 100644 --- a/goal_src/levels/citadel/citadel-sages.gc +++ b/goal_src/levels/citadel/citadel-sages.gc @@ -42,7 +42,7 @@ (defbehavior citb-sagecage-draw-bars citb-sagecage () - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((gp-0 (-> self node-list data 3 bone transform)) (s5-0 (new 'stack-no-clear 'vector)) ) @@ -534,7 +534,7 @@ (defmethod draw-npc-shadow red-sagecage ((obj red-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -648,7 +648,7 @@ (defmethod draw-npc-shadow blue-sagecage ((obj blue-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -767,7 +767,7 @@ (defmethod draw-npc-shadow yellow-sagecage ((obj yellow-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/citadel/citb-drop-plat.gc b/goal_src/levels/citadel/citb-drop-plat.gc index fc7cdf70d2..f615a7b9f2 100644 --- a/goal_src/levels/citadel/citb-drop-plat.gc +++ b/goal_src/levels/citadel/citb-drop-plat.gc @@ -137,12 +137,12 @@ (set! (-> self root-override trans y) (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (ja-post) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self delay)) - (let ((v1-14 (logclear (-> self draw status) (draw-status drwf01))) + (let ((v1-14 (logclear (-> self draw status) (draw-status hidden))) (a0-5 (-> self draw)) ) (set! (-> a0-5 status) v1-14) @@ -259,7 +259,7 @@ (defstate drop-plat-die (drop-plat) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/citadel/citb-plat.gc b/goal_src/levels/citadel/citb-plat.gc index 4f0de9a552..09d7bf7590 100644 --- a/goal_src/levels/citadel/citb-plat.gc +++ b/goal_src/levels/citadel/citb-plat.gc @@ -219,7 +219,7 @@ :virtual #t :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options fop3)) + (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options wrap-phase)) (get-current-phase (-> self sync)) (get-current-phase-with-mirror (-> self sync)) ) @@ -329,11 +329,11 @@ (the-as (function none :behavior citb-stair-plat) #f) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (not (-> self rise)) (suspend) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0) (set! (-> self state-time) (-> *display* base-frame-counter)) (while (< (- (-> *display* base-frame-counter) (-> self state-time)) (-> self delay)) @@ -928,7 +928,7 @@ ) (defmethod dummy-26 citb-stopbox ((obj citb-stopbox)) - (logior! (-> obj fact options) (fact-options fop3)) + (logior! (-> obj fact options) (fact-options wrap-phase)) (logclear! (-> obj mask) (process-mask actor-pause)) 0 (none) @@ -1214,7 +1214,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-override)) (while #t (suspend) @@ -1228,7 +1228,7 @@ (the-as (function none :behavior citb-exit-plat) rider-trans) :code (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self root-override)) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t diff --git a/goal_src/levels/common/babak.gc b/goal_src/levels/common/babak.gc index 1d104079a5..4a09e372f6 100644 --- a/goal_src/levels/common/babak.gc +++ b/goal_src/levels/common/babak.gc @@ -449,7 +449,7 @@ (defmethod TODO-RENAME-59 babak ((obj babak)) (cond ((and (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) - (logtest? (-> obj enemy-info options) (fact-options fop1)) + (logtest? (-> obj enemy-info options) (fact-options has-power-cell)) ) (go (method-of-object obj nav-enemy-fuel-cell)) ) diff --git a/goal_src/levels/common/basebutton.gc b/goal_src/levels/common/basebutton.gc index 5501b8c7bf..198565897b 100644 --- a/goal_src/levels/common/basebutton.gc +++ b/goal_src/levels/common/basebutton.gc @@ -543,7 +543,7 @@ ) (case (-> self level) (('citadel 'lavatube) - (while (and *target* (zero? (logand (-> *target* draw status) (draw-status drwf01)))) + (while (and *target* (zero? (logand (-> *target* draw status) (draw-status hidden)))) (suspend) ) ) @@ -594,7 +594,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) diff --git a/goal_src/levels/common/baseplat.gc b/goal_src/levels/common/baseplat.gc index b3dd350084..69af8303dc 100644 --- a/goal_src/levels/common/baseplat.gc +++ b/goal_src/levels/common/baseplat.gc @@ -261,7 +261,7 @@ eco-door-event-handler (set! (-> v1-6 num-func) num-func-identity) (set! (-> v1-6 frame-num) (the float (+ (-> v1-6 frame-group data 0 length) -1))) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (suspend) (update-transforms! (-> self root-override)) (ja-post) @@ -293,7 +293,7 @@ eco-door-event-handler :code (behavior () (restore-collide-with-as (-> self root-override)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (let ((gp-0 (new 'stack 'overlaps-others-params))) (set! (-> gp-0 options) (the-as uint 1)) (set! (-> gp-0 tlist) #f) diff --git a/goal_src/levels/common/blocking-plane.gc b/goal_src/levels/common/blocking-plane.gc index 858d34dbe8..43f1d038ce 100644 --- a/goal_src/levels/common/blocking-plane.gc +++ b/goal_src/levels/common/blocking-plane.gc @@ -82,7 +82,7 @@ ) ) (initialize-skeleton self *ef-plane-sg* '()) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (go blocking-plane-idle) (none) ) diff --git a/goal_src/levels/common/nav-enemy.gc b/goal_src/levels/common/nav-enemy.gc index ee016422de..013dd72959 100644 --- a/goal_src/levels/common/nav-enemy.gc +++ b/goal_src/levels/common/nav-enemy.gc @@ -237,7 +237,7 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) ) (none) @@ -729,11 +729,11 @@ nav-enemy-default-event-handler (and (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj collide-info pause-adjust-distance)) (vector-vector-distance (-> obj collide-info trans) (camera-pos)) ) - (or (logtest? (-> obj draw status) (draw-status drwf03)) (!= (-> obj next-state name) 'nav-enemy-idle)) + (or (logtest? (-> obj draw status) (draw-status was-drawn)) (!= (-> obj next-state name) 'nav-enemy-idle)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -770,7 +770,7 @@ nav-enemy-default-event-handler ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -834,7 +834,7 @@ nav-enemy-default-event-handler (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status drwf03))) + (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status was-drawn))) (set! (-> self free-time) (-> *display* base-frame-counter)) ) (if (or (or (not *target*) (< (-> self enemy-info idle-distance) @@ -1555,13 +1555,13 @@ nav-enemy-default-event-handler 600 ) (send-event self 'death-end) - (if (logtest? (-> self enemy-info options) (fact-options fop1)) + (if (logtest? (-> self enemy-info options) (fact-options has-power-cell)) (go-virtual nav-enemy-fuel-cell) ) (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1599,7 +1599,7 @@ nav-enemy-default-event-handler (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/common/plat.gc b/goal_src/levels/common/plat.gc index 50de8c970e..976390d85f 100644 --- a/goal_src/levels/common/plat.gc +++ b/goal_src/levels/common/plat.gc @@ -247,7 +247,7 @@ ) :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options fop3)) + (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options wrap-phase)) (get-current-phase (-> self sync)) (get-current-phase-with-mirror (-> self sync)) ) @@ -298,7 +298,7 @@ ) ) ((> (-> obj sync period) 0) - (set! (-> obj path-pos) (if (logtest? (-> obj fact options) (fact-options fop3)) + (set! (-> obj path-pos) (if (logtest? (-> obj fact options) (fact-options wrap-phase)) (get-current-phase (-> obj sync)) (get-current-phase-with-mirror (-> obj sync)) ) diff --git a/goal_src/levels/common/ropebridge.gc b/goal_src/levels/common/ropebridge.gc index 9ac29dcae2..289a76f524 100644 --- a/goal_src/levels/common/ropebridge.gc +++ b/goal_src/levels/common/ropebridge.gc @@ -826,7 +826,7 @@ (< (- (-> *display* base-frame-counter) (-> obj agitated-time-stamp)) (seconds 5)) (or (>= (-> obj sleep-dist) (vector-vector-distance (-> obj root-override trans) (math-camera-pos))) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/goal_src/levels/common/sharkey.gc b/goal_src/levels/common/sharkey.gc index 8eac663fb7..d167bedd1f 100644 --- a/goal_src/levels/common/sharkey.gc +++ b/goal_src/levels/common/sharkey.gc @@ -81,7 +81,7 @@ nav-enemy-default-event-handler (vector-vector-distance (-> obj collide-info trans) (math-camera-pos)) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -234,7 +234,7 @@ nav-enemy-default-event-handler ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -257,7 +257,7 @@ nav-enemy-default-event-handler ) (let ((a0-4 (dummy-16 (-> self nav) (-> *target* control trans)))) (when (or (and a0-4 (logtest? (-> a0-4 pat) 2)) - (and (logtest? (-> self draw status) (draw-status drwf01)) + (and (logtest? (-> self draw status) (draw-status hidden)) (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) ) ) @@ -300,7 +300,7 @@ nav-enemy-default-event-handler (ja-post) (suspend) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (anim-loop) (none) ) @@ -501,7 +501,7 @@ nav-enemy-default-event-handler ) ) (sharkey-reset-position) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (go-virtual nav-enemy-idle) (none) ) diff --git a/goal_src/levels/common/water-anim.gc b/goal_src/levels/common/water-anim.gc index 110cd60790..3400e27ff7 100644 --- a/goal_src/levels/common/water-anim.gc +++ b/goal_src/levels/common/water-anim.gc @@ -881,8 +881,8 @@ ) ) (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y))) - (logior! (-> self draw status) (draw-status drwf01)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) + (logclear! (-> self draw status) (draw-status hidden)) ) (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound))) (update! (-> self sound)) diff --git a/goal_src/levels/finalboss/green-eco-lurker.gc b/goal_src/levels/finalboss/green-eco-lurker.gc index e141e10c0c..724a858abb 100644 --- a/goal_src/levels/finalboss/green-eco-lurker.gc +++ b/goal_src/levels/finalboss/green-eco-lurker.gc @@ -412,13 +412,13 @@ (defstate green-eco-lurker-wait-to-appear (green-eco-lurker) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self collide-info)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self collide-info)) (none) ) @@ -443,7 +443,7 @@ (the-as symbol (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((f0-0 (-> obj appear-dest y)) (v1-7 (-> obj draw shadow-ctrl)) ) diff --git a/goal_src/levels/finalboss/light-eco.gc b/goal_src/levels/finalboss/light-eco.gc index e88b158174..30d8517887 100644 --- a/goal_src/levels/finalboss/light-eco.gc +++ b/goal_src/levels/finalboss/light-eco.gc @@ -560,7 +560,7 @@ (behavior () (send-event (ppointer->process (-> self parent)) 'untrigger (-> self angle-bit)) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) (suspend) @@ -819,7 +819,7 @@ (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-loop!) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) diff --git a/goal_src/levels/finalboss/robotboss-misc.gc b/goal_src/levels/finalboss/robotboss-misc.gc index 42b1d60b37..22a8a24490 100644 --- a/goal_src/levels/finalboss/robotboss-misc.gc +++ b/goal_src/levels/finalboss/robotboss-misc.gc @@ -428,12 +428,12 @@ (if (nonzero? (-> self sound)) (stop! (-> self sound)) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (ja-post) (while (not (task-closed? (game-task finalboss-movies) (task-status need-reminder-a))) (suspend) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (let ((v1-12 (-> self skel root-channel 0))) (set! (-> v1-12 num-func) num-func-identity) (set! (-> v1-12 frame-num) 0.0) diff --git a/goal_src/levels/finalboss/robotboss-weapon.gc b/goal_src/levels/finalboss/robotboss-weapon.gc index 298f2492c6..7544d70f79 100644 --- a/goal_src/levels/finalboss/robotboss-weapon.gc +++ b/goal_src/levels/finalboss/robotboss-weapon.gc @@ -277,7 +277,7 @@ (-> s5-1 ppointer) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (cond ((or arg0 (and *target* (< (-> (target-pos 0) y) (+ 40960.0 (-> self entity extra trans y))))) (if *target* @@ -712,7 +712,7 @@ (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) arg3) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 664) self)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (go greenshot-idle) (none) ) @@ -798,7 +798,7 @@ (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (sound-play-by-name (static-sound-name "red-explode") (new-sound-id) 1024 0 0 1 #t) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (quaternion-identity! (-> self root-override quat)) (set! (-> self ring radius-secondary) 3072.0) (set! (-> self ring origin quad) (-> self root-override trans quad)) @@ -983,7 +983,7 @@ (set! (-> self part) (create-launch-control (-> *part-group-id-table* 647) self)) (set! (-> self shot-particle) (create-launch-control (-> *part-group-id-table* 665) self)) (set! (-> self test-particle) (create-launch-control (-> *part-group-id-table* 679) self)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self sound) (new 'process 'ambient-sound @@ -1087,7 +1087,7 @@ ) (set! (-> self root-override trans quad) (-> arg0 quad)) (initialize-skeleton self *redring-sg* '()) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) arg3) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 652) self)) diff --git a/goal_src/levels/finalboss/robotboss.gc b/goal_src/levels/finalboss/robotboss.gc index 94b4534a17..848e0c7e2a 100644 --- a/goal_src/levels/finalboss/robotboss.gc +++ b/goal_src/levels/finalboss/robotboss.gc @@ -518,7 +518,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (else @@ -872,7 +872,7 @@ (defstate robotboss-white-eco-movie (robotboss) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self children-spawned) 0) (set! (-> self state-time) (-> *display* base-frame-counter)) (ja-post) @@ -880,7 +880,7 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/goal_src/levels/finalboss/sage-finalboss.gc b/goal_src/levels/finalboss/sage-finalboss.gc index 22711c14e1..aec96556d0 100644 --- a/goal_src/levels/finalboss/sage-finalboss.gc +++ b/goal_src/levels/finalboss/sage-finalboss.gc @@ -1024,7 +1024,7 @@ (set-setting! *setting-control* self 'allow-progress #f 0.0 0) (set-setting! *setting-control* self 'music 'ogreboss 0.0 0) (set! (-> self state-time) (-> *display* game-frame-counter)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let ((gp-0 (-> self mask))) (load-state-want-display-level 'finalboss 'special) (logclear! (-> self mask) (process-mask pause progress)) diff --git a/goal_src/levels/firecanyon/firecanyon-obs.gc b/goal_src/levels/firecanyon/firecanyon-obs.gc index 6e356908c3..4f14e47261 100644 --- a/goal_src/levels/firecanyon/firecanyon-obs.gc +++ b/goal_src/levels/firecanyon/firecanyon-obs.gc @@ -126,7 +126,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -722,7 +722,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/goal_src/levels/flut_common/flutflut.gc b/goal_src/levels/flut_common/flutflut.gc index daed63d44e..f1366edf41 100644 --- a/goal_src/levels/flut_common/flutflut.gc +++ b/goal_src/levels/flut_common/flutflut.gc @@ -205,7 +205,7 @@ (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) (go-virtual wait-for-return) ) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) (level-hint-spawn (game-text-id flutflut-reminder) diff --git a/goal_src/levels/flut_common/target-flut.gc b/goal_src/levels/flut_common/target-flut.gc index 66c4669e78..cf68718658 100644 --- a/goal_src/levels/flut_common/target-flut.gc +++ b/goal_src/levels/flut_common/target-flut.gc @@ -2158,7 +2158,7 @@ ) ) ) - (dummy-9 gp-0 arg1) + (combine! gp-0 arg1) (when (zero? (logand (-> gp-0 mask) 2)) (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) diff --git a/goal_src/levels/jungle/darkvine.gc b/goal_src/levels/jungle/darkvine.gc index 0684df4fda..b5a698ebd8 100644 --- a/goal_src/levels/jungle/darkvine.gc +++ b/goal_src/levels/jungle/darkvine.gc @@ -37,13 +37,13 @@ (defmethod run-logic? darkvine ((obj darkvine)) (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) + (logtest? (-> obj draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/goal_src/levels/jungle/fisher.gc b/goal_src/levels/jungle/fisher.gc index db760cd4cd..2adef4620a 100644 --- a/goal_src/levels/jungle/fisher.gc +++ b/goal_src/levels/jungle/fisher.gc @@ -847,7 +847,7 @@ (defmethod draw-npc-shadow fisher ((obj fisher)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/jungle/jungle-mirrors.gc b/goal_src/levels/jungle/jungle-mirrors.gc index cd3fc1631d..0006158e87 100644 --- a/goal_src/levels/jungle/jungle-mirrors.gc +++ b/goal_src/levels/jungle/jungle-mirrors.gc @@ -1044,7 +1044,7 @@ (defbehavior periscope-draw-beam-impact periscope () (when (periscope-has-power-input?) (update! (-> self sound)) - (if (logtest? (-> self draw status) (draw-status drwf03)) + (if (logtest? (-> self draw status) (draw-status was-drawn)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) @@ -1278,7 +1278,7 @@ :exit (behavior () (restore-collide-with-as (-> self root-override)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -1295,7 +1295,7 @@ (ja-post) (suspend) (update-transforms! (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -1560,7 +1560,7 @@ (defstate periscope-player-control (periscope) :exit (behavior () - (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) + (logclear! (-> self reflector 0 draw status) (draw-status hidden)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -1677,7 +1677,7 @@ (set! (-> gp-0 vector 3 quad) a2-2) ) (send-event *camera* 'change-state cam-periscope 0) - (logior! (-> self reflector 0 draw status) (draw-status drwf01)) + (logior! (-> self reflector 0 draw status) (draw-status hidden)) (suspend) (while #t (if (not (-> self aligned?)) @@ -1705,7 +1705,7 @@ (periscope-crosshair) (suspend) ) - (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) + (logclear! (-> self reflector 0 draw status) (draw-status hidden)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -2037,7 +2037,7 @@ (while #t (draw-power-beam gp-0 (-> self beam-end)) (update! (-> self sound)) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) diff --git a/goal_src/levels/jungle/jungle-obs.gc b/goal_src/levels/jungle/jungle-obs.gc index 049d75008f..dbc3ec23e8 100644 --- a/goal_src/levels/jungle/jungle-obs.gc +++ b/goal_src/levels/jungle/jungle-obs.gc @@ -93,7 +93,7 @@ (joint-control-channel-group! a0-0 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) ) (until (ja-done? 0) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (cond ((> (-> self draw cur-lod) 0) (ja-post) @@ -633,7 +633,7 @@ (ja-post) (while #t (suspend) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((a0-1 (-> self skel root-channel 0))) (set! (-> a0-1 param 0) (-> self speed)) (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-loop!) @@ -1196,7 +1196,7 @@ :code (behavior ((arg0 symbol)) (set! (-> self draw force-lod) 1) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (when arg0 (let ((v1-6 (-> self skel root-channel 0))) (set! (-> v1-6 num-func) num-func-identity) @@ -1255,7 +1255,7 @@ :code (behavior ((arg0 symbol)) (set! (-> self draw force-lod) 0) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (process-entity-status! self (entity-perm-status complete) #t) (when arg0 (let ((v1-6 (-> self skel root-channel 0))) @@ -1276,7 +1276,7 @@ ) (suspend) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) diff --git a/goal_src/levels/jungle/junglesnake.gc b/goal_src/levels/jungle/junglesnake.gc index 46e2ea4ef0..484924a6c1 100644 --- a/goal_src/levels/jungle/junglesnake.gc +++ b/goal_src/levels/jungle/junglesnake.gc @@ -345,7 +345,7 @@ junglesnake-default-event-handler (set! (-> self track-player-tilt) #f) (set! (-> self des-ry) (-> self ry)) (set! (-> self des-tilt) (-> self tilt)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -375,7 +375,7 @@ junglesnake-default-event-handler junglesnake-default-event-handler :enter (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self track-player-ry) #f) (set! (-> self track-player-tilt) #f) (set! (-> self skel postbind-function) junglesnake-joint-callback) @@ -701,7 +701,7 @@ junglesnake-default-event-handler (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/lavatube/lavatube-energy.gc b/goal_src/levels/lavatube/lavatube-energy.gc index a36633b3e8..3141082c6d 100644 --- a/goal_src/levels/lavatube/lavatube-energy.gc +++ b/goal_src/levels/lavatube/lavatube-energy.gc @@ -970,7 +970,7 @@ (-> gp-1 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) diff --git a/goal_src/levels/lavatube/lavatube-obs.gc b/goal_src/levels/lavatube/lavatube-obs.gc index 10cb84f1f9..c5de11221f 100644 --- a/goal_src/levels/lavatube/lavatube-obs.gc +++ b/goal_src/levels/lavatube/lavatube-obs.gc @@ -589,8 +589,8 @@ ) ) (if (< (vector-vector-xz-distance-squared (-> self root-override trans) (camera-pos)) 1073741800.0) - (logior! (-> self draw status) (draw-status drwf05)) - (set! (-> self draw status) (the-as draw-status (logclear (-> self draw status) (draw-status drwf05)))) + (logior! (-> self draw status) (draw-status skip-bones)) + (set! (-> self draw status) (the-as draw-status (logclear (-> self draw status) (draw-status skip-bones)))) ) (none) ) @@ -620,7 +620,7 @@ (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -902,7 +902,7 @@ (-> obj root-override trans) ) ) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (set! (-> obj speed) (/ 300.0 (res-lump-float (-> obj entity) 'speed :default 61440.0))) (set! sv-16 (new 'static 'res-tag)) (let ((s5-1 (res-lump-data arg0 'delay pointer :tag-ptr (& sv-16)))) @@ -1301,7 +1301,7 @@ (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -1537,7 +1537,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/goal_src/levels/maincave/baby-spider.gc b/goal_src/levels/maincave/baby-spider.gc index 49f1a0153b..7c9088742e 100644 --- a/goal_src/levels/maincave/baby-spider.gc +++ b/goal_src/levels/maincave/baby-spider.gc @@ -285,7 +285,7 @@ baby-spider-default-event-handler (defmethod dummy-53 baby-spider ((obj baby-spider)) (cond - ((logtest? (-> obj draw status) (draw-status drwf03)) + ((logtest? (-> obj draw status) (draw-status was-drawn)) (set! (-> obj last-visible-time) (-> *display* base-frame-counter)) (return #f) ) @@ -352,7 +352,7 @@ baby-spider-default-event-handler ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -799,7 +799,7 @@ baby-spider-default-event-handler baby-spider-default-event-handler :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (let ((v1-2 (-> self event-death))) (if v1-2 (send-event (ppointer->process (-> self parent)) v1-2) diff --git a/goal_src/levels/maincave/dark-crystal.gc b/goal_src/levels/maincave/dark-crystal.gc index a72c85535d..d63c38c8a7 100644 --- a/goal_src/levels/maincave/dark-crystal.gc +++ b/goal_src/levels/maincave/dark-crystal.gc @@ -540,7 +540,7 @@ (suspend) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (dummy-20 self) (if (-> self underwater?) (sound-play-by-name (static-sound-name "water-explosion") (new-sound-id) 1024 0 0 1 #t) @@ -576,7 +576,7 @@ (go dark-crystal-spawn-fuel-cell) ) ) - (dummy-18 self) + (cleanup-for-death self) (until (not (-> self child)) (suspend) ) @@ -603,7 +603,7 @@ ) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (if (not (task-complete? *game-info* (-> self entity extra perm task))) (birth-pickup-at-point (-> self root-override trans) @@ -619,7 +619,7 @@ (suspend) ) (aybabtu 2) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/maincave/driller-lurker.gc b/goal_src/levels/maincave/driller-lurker.gc index 0d8865bb1e..f3edf9f338 100644 --- a/goal_src/levels/maincave/driller-lurker.gc +++ b/goal_src/levels/maincave/driller-lurker.gc @@ -1189,7 +1189,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/maincave/gnawer.gc b/goal_src/levels/maincave/gnawer.gc index e3099d2481..b36d611752 100644 --- a/goal_src/levels/maincave/gnawer.gc +++ b/goal_src/levels/maincave/gnawer.gc @@ -464,7 +464,7 @@ (defmethod dummy-23 gnawer ((obj gnawer)) (when (not (-> obj hidden?)) (set! (-> obj hidden?) #t) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (logclear! (-> obj mask) (process-mask attackable)) (set! (-> obj skel postbind-function) #f) (set! (-> obj root-override trans quad) (-> obj post-trans quad)) @@ -482,7 +482,7 @@ (set! (-> obj hidden?) #f) (restore-collide-with-as (-> obj root-override)) (set! (-> obj skel postbind-function) gnawer-joint-callback) - (logclear! (-> obj draw status) (draw-status drwf01)) + (logclear! (-> obj draw status) (draw-status hidden)) ) (none) ) @@ -1404,7 +1404,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (process-entity-status! self (entity-perm-status complete) #t) (dummy-27 self) (let ((v1-10 (-> self entity extra perm))) @@ -1449,7 +1449,7 @@ (until (not (-> self child)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -1519,7 +1519,7 @@ ) (process-entity-status! self (entity-perm-status bit-3) #f) (logior! (-> self mask) (process-mask actor-pause)) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -1543,7 +1543,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (case (get-reminder (get-task-control (game-task cave-gnawers)) 3) (((-> self gnawer-id)) (when (not (task-complete? *game-info* (-> self entity extra perm task))) @@ -1580,7 +1580,7 @@ (until (not (-> self child)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/maincave/mother-spider-egg.gc b/goal_src/levels/maincave/mother-spider-egg.gc index c4a139bc05..ee7e181d4f 100644 --- a/goal_src/levels/maincave/mother-spider-egg.gc +++ b/goal_src/levels/maincave/mother-spider-egg.gc @@ -173,7 +173,7 @@ (defmethod draw-egg-shadow mother-spider-egg ((obj mother-spider-egg) (arg0 vector) (arg1 symbol)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) (a2-1 (new 'stack-no-clear 'vector)) @@ -389,7 +389,7 @@ (defstate mother-spider-egg-hatch (mother-spider-egg) :trans (behavior () - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) (let ((a1-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> self fall-dest quad)) (compute-and-draw-shadow @@ -576,7 +576,7 @@ :code (behavior () (send-event (ppointer->process (-> self parent-override)) 'untrigger) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let ((v1-8 (-> self draw shadow-ctrl))) (logior! (-> v1-8 settings flags) 32) ) diff --git a/goal_src/levels/maincave/mother-spider.gc b/goal_src/levels/maincave/mother-spider.gc index 2d8a3060b4..a4c942045c 100644 --- a/goal_src/levels/maincave/mother-spider.gc +++ b/goal_src/levels/maincave/mother-spider.gc @@ -200,7 +200,7 @@ (defstate wait-for-children (mother-spider) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) @@ -381,7 +381,7 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) @@ -439,7 +439,7 @@ (defmethod TODO-RENAME-24 mother-spider ((obj mother-spider)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -859,7 +859,7 @@ (clear-collide-with-as (-> self root-override)) (shut-down! (-> self neck)) (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :exit @@ -867,7 +867,7 @@ (restore-collide-with-as (-> self root-override)) (set! (-> self skel postbind-function) mother-spider-full-joint-callback) (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -1884,11 +1884,11 @@ (logclear! (-> self mask) (process-mask actor-pause)) (clear-collide-with-as (-> self root-override)) (set! (-> self skel postbind-function) #f) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -1973,7 +1973,7 @@ (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (< (vector-vector-xz-distance (-> obj root-override trans) (math-camera-pos)) (-> obj deactivate-xz-dist)) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/goal_src/levels/misty/babak-with-cannon.gc b/goal_src/levels/misty/babak-with-cannon.gc index 0676fee6cd..5d0ce12e70 100644 --- a/goal_src/levels/misty/babak-with-cannon.gc +++ b/goal_src/levels/misty/babak-with-cannon.gc @@ -473,7 +473,7 @@ nav-enemy-default-event-handler (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -499,7 +499,7 @@ nav-enemy-default-event-handler (set! (-> obj cannon-ent) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) (logclear! (-> obj mask) (process-mask actor-pause)) (if (or (not (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))) - (zero? (logand (-> obj enemy-info options) (fact-options fop1))) + (zero? (logand (-> obj enemy-info options) (fact-options has-power-cell))) ) (go (method-of-object obj nav-enemy-idle)) ) diff --git a/goal_src/levels/misty/balloonlurker.gc b/goal_src/levels/misty/balloonlurker.gc index b2e9609556..735702708d 100644 --- a/goal_src/levels/misty/balloonlurker.gc +++ b/goal_src/levels/misty/balloonlurker.gc @@ -712,16 +712,16 @@ (balloonlurker-play-sounds) (when (nonzero? (-> self draw)) (cond - ((or (logtest? (-> self draw status) (draw-status drwf04)) - (logtest? (-> self draw status) (draw-status drwf03)) + ((or (logtest? (-> self draw status) (draw-status no-skeleton-update)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) - (logclear! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status skip-bones)) (update-transforms! (-> self root-overlay)) (ja-post) ) (else (set! (-> self draw origin quad) (-> self root-overlay trans quad)) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) ) ) ) @@ -877,7 +877,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (while (-> self child) (suspend) ) @@ -995,7 +995,7 @@ (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/misty/misty-conveyor.gc b/goal_src/levels/misty/misty-conveyor.gc index 05fb3af2e3..9aaa59e0b2 100644 --- a/goal_src/levels/misty/misty-conveyor.gc +++ b/goal_src/levels/misty/misty-conveyor.gc @@ -455,7 +455,7 @@ :code (behavior () (sound-stop (-> self sound-id)) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/misty/misty-obs.gc b/goal_src/levels/misty/misty-obs.gc index c2e29c062a..6a98c2733d 100644 --- a/goal_src/levels/misty/misty-obs.gc +++ b/goal_src/levels/misty/misty-obs.gc @@ -1625,7 +1625,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -2156,7 +2156,7 @@ (defstate boat-fuelcell-die (boat-fuelcell) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/misty/mistycannon.gc b/goal_src/levels/misty/mistycannon.gc index b5cb00c58d..c766bc3c6a 100644 --- a/goal_src/levels/misty/mistycannon.gc +++ b/goal_src/levels/misty/mistycannon.gc @@ -847,7 +847,7 @@ ) (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) (spawn-part self) - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) (if (logtest? (-> self root-override status) 1) (draw-shadow (-> self root-override shadow-pos) diff --git a/goal_src/levels/misty/quicksandlurker.gc b/goal_src/levels/misty/quicksandlurker.gc index 68b5816736..7761c5d6d5 100644 --- a/goal_src/levels/misty/quicksandlurker.gc +++ b/goal_src/levels/misty/quicksandlurker.gc @@ -386,7 +386,7 @@ ) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -430,7 +430,7 @@ (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -540,9 +540,10 @@ ) ;; ERROR: function has no type analysis. Cannot decompile. +;; get-height-over-navmesh, unused. -(defun intersects-nav-mesh? ((arg0 quicksandlurker) (arg1 int) (arg2 (inline-array vector)) (arg3 vector)) - (if (dummy-16 arg0 arg1 arg2 arg3) +(defun intersects-nav-mesh? ((arg0 nav-control) (arg1 vector)) + (if (dummy-16 arg0 arg1) #t ) ) @@ -625,12 +626,12 @@ (the-as (function process int symbol event-message-block object :behavior quicksandlurker) #f) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -815,7 +816,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (+! s4-0 1) (when (>= s4-0 s5-0) - (if (logtest? (-> self draw status) (draw-status drwf03)) + (if (logtest? (-> self draw status) (draw-status was-drawn)) (go quicksandlurker-attack) ) ) @@ -1117,7 +1118,7 @@ (joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/ogre/flying-lurker.gc b/goal_src/levels/ogre/flying-lurker.gc index c8bcedfd4b..97a58a090d 100644 --- a/goal_src/levels/ogre/flying-lurker.gc +++ b/goal_src/levels/ogre/flying-lurker.gc @@ -80,7 +80,7 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) (set! (-> self draw status) v0-0) (the-as uint v0-0) ) @@ -204,7 +204,7 @@ ) (send-event-function *target* a1-15) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (while #t (suspend) @@ -249,7 +249,7 @@ (-> gp-0 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (none) @@ -348,7 +348,7 @@ (defstate plunger-lurker-die (plunger-lurker) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (suspend) 0 @@ -438,7 +438,7 @@ (s4-0 #f) ) (when (-> obj draw shadow) - (when (or (logtest? (-> obj draw status) (draw-status drwf03)) + (when (or (logtest? (-> obj draw status) (draw-status was-drawn)) (< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0) ) (let ((s3-1 (new 'stack-no-clear 'collide-tri-result)) @@ -525,7 +525,7 @@ (defstate flying-lurker-die (flying-lurker) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -535,7 +535,7 @@ :code (behavior () (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -716,7 +716,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ((= v1-0 'sleep) @@ -776,7 +776,7 @@ :enter (behavior () (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -1002,7 +1002,7 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) (set! (-> self draw status) v0-0) (the-as uint v0-0) ) @@ -1144,7 +1144,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ((= v1-0 'sleep) @@ -1285,7 +1285,7 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/goal_src/levels/ogre/ogre-obs.gc b/goal_src/levels/ogre/ogre-obs.gc index 3c4d629516..78e3fac564 100644 --- a/goal_src/levels/ogre/ogre-obs.gc +++ b/goal_src/levels/ogre/ogre-obs.gc @@ -400,7 +400,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -583,7 +583,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -626,7 +626,7 @@ ) :code (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -1692,7 +1692,7 @@ (joint-control-channel-group-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/goal_src/levels/ogre/ogreboss.gc b/goal_src/levels/ogre/ogreboss.gc index 689eb18350..3ff880704a 100644 --- a/goal_src/levels/ogre/ogreboss.gc +++ b/goal_src/levels/ogre/ogreboss.gc @@ -166,7 +166,7 @@ (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -216,7 +216,7 @@ (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -430,7 +430,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -819,7 +819,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -947,7 +947,7 @@ (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1123,7 +1123,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1718,7 +1718,7 @@ ) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self submerged) #t) (let ((s5-1 (-> *display* base-frame-counter))) (until (>= (- (-> *display* base-frame-counter) s5-1) arg0) @@ -1733,7 +1733,7 @@ (defbehavior ogreboss-emerge ogreboss ((arg0 float)) (when (-> self submerged) (set! (-> self submerged) #f) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (cond ((-> self at-near-spot) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) @@ -2751,7 +2751,7 @@ (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/racer_common/racer-states.gc b/goal_src/levels/racer_common/racer-states.gc index 998096f644..45ba20095a 100644 --- a/goal_src/levels/racer_common/racer-states.gc +++ b/goal_src/levels/racer_common/racer-states.gc @@ -961,7 +961,7 @@ (set! (-> v1-0 angle) #f) ) (set! (-> self attack-info trans quad) (the-as uint128 0)) - (dummy-9 (-> self attack-info) arg1) + (combine! (-> self attack-info) arg1) (case (-> self attack-info mode) (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) (pickup-collectable! (-> self fact-info-target) (pickup-type eco-green) -1000.0 (the-as handle #f)) diff --git a/goal_src/levels/racer_common/target-racer.gc b/goal_src/levels/racer_common/target-racer.gc index 68fb0ae2b5..1c2a44e846 100644 --- a/goal_src/levels/racer_common/target-racer.gc +++ b/goal_src/levels/racer_common/target-racer.gc @@ -711,7 +711,7 @@ (a1-13 (cond ((= v1-61 (pat-material waterbottom)) - (when (and (logtest? (-> self draw status) (draw-status drwf03)) (zero? (-> self draw cur-lod))) + (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) diff --git a/goal_src/levels/robocave/spider-egg.gc b/goal_src/levels/robocave/spider-egg.gc index f2eea8d627..7b4eccbd52 100644 --- a/goal_src/levels/robocave/spider-egg.gc +++ b/goal_src/levels/robocave/spider-egg.gc @@ -183,7 +183,7 @@ ) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (logclear! (-> self mask) (process-mask actor-pause)) (clear-collide-with-as (-> self root-override)) (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) @@ -223,7 +223,7 @@ (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) @@ -246,7 +246,7 @@ ) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (logclear! (-> self mask) (process-mask actor-pause)) (when (-> self notify-actor) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) @@ -304,7 +304,7 @@ (joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) diff --git a/goal_src/levels/rolling/rolling-lightning-mole.gc b/goal_src/levels/rolling/rolling-lightning-mole.gc index b8b0c70a0b..9f2b78e7ea 100644 --- a/goal_src/levels/rolling/rolling-lightning-mole.gc +++ b/goal_src/levels/rolling/rolling-lightning-mole.gc @@ -728,7 +728,7 @@ (defstate lightning-mole-gone (lightning-mole) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (ja-channel-set! 0) (ja-post) (while (-> self child) @@ -1353,7 +1353,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -1378,7 +1378,7 @@ (suspend) (ja-eval) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (go peeper-wait) (none) ) @@ -1404,7 +1404,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) @@ -1452,7 +1452,7 @@ (if (nonzero? (-> self sound)) (stop! (-> self sound)) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/goal_src/levels/rolling/rolling-obs.gc b/goal_src/levels/rolling/rolling-obs.gc index 4ef8847392..23f462c789 100644 --- a/goal_src/levels/rolling/rolling-obs.gc +++ b/goal_src/levels/rolling/rolling-obs.gc @@ -307,7 +307,7 @@ :code (behavior () (dark-plant-randomize self) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (sound-play-by-name (static-sound-name "darkvine-grow") (new-sound-id) 1024 0 0 1 #t) (let ((a0-6 (-> self skel root-channel 0))) (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) @@ -336,7 +336,7 @@ (defstate dark-plant-gone (dark-plant) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let* ((f30-0 1500.0) (v1-4 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-5 (the-as number (logior #x3f800000 v1-4))) @@ -406,7 +406,7 @@ :code (behavior () (while #t - (when (and (logtest? (-> self draw status) (draw-status drwf03)) + (when (and (logtest? (-> self draw status) (draw-status was-drawn)) *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))) ) diff --git a/goal_src/levels/rolling/rolling-race-ring.gc b/goal_src/levels/rolling/rolling-race-ring.gc index bcf698134b..119656200b 100644 --- a/goal_src/levels/rolling/rolling-race-ring.gc +++ b/goal_src/levels/rolling/rolling-race-ring.gc @@ -967,8 +967,8 @@ (logior! (-> *target* mask) (process-mask sleep)) ) (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (logclear! (-> self draw status) (draw-status drwf01)) - (logior! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status skip-bones)) (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) (ja-play-spooled-anim (new 'static 'spool-anim :name "race-ring-second-anim" :index 4 :parts 2 :command-list '()) @@ -983,8 +983,8 @@ (the-as (function process-drawable symbol) false-func) ) ) - (logclear! (-> self draw status) (draw-status drwf05)) - (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status skip-bones)) + (logior! (-> self draw status) (draw-status hidden)) (cond ((handle->process (the-as int gp-2)) (deactivate (-> gp-2 process 0)) @@ -1085,7 +1085,7 @@ (set! (-> obj link) (new 'process 'actor-link-info obj)) (set! (-> obj part-track) (the-as handle #f)) (set! (-> obj alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (set! (-> obj sound) (new 'process 'ambient-sound @@ -1153,10 +1153,10 @@ ) ((and (last-ring? obj) (= (get-task-status (-> obj entity extra perm task)) (task-status need-resolution))) (let ((s5-2 (new 'stack-no-clear 'vector))) - (logclear! (-> obj draw status) (draw-status drwf01)) + (logclear! (-> obj draw status) (draw-status hidden)) (ja-post) (vector<-cspace! s5-2 (-> obj node-list data 5)) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (birth-pickup-at-point s5-2 (pickup-type fuel-cell) diff --git a/goal_src/levels/rolling/rolling-robber.gc b/goal_src/levels/rolling/rolling-robber.gc index 642cb94a2f..10a518fbc2 100644 --- a/goal_src/levels/rolling/rolling-robber.gc +++ b/goal_src/levels/rolling/rolling-robber.gc @@ -366,7 +366,7 @@ (defstate robber-dead (robber) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -413,7 +413,7 @@ ) (else (set! gp-0 #f) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let ((s5-1 (new 'stack-no-clear 'vector))) (eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp) (set! (-> s5-1 y) (+ 8192.0 (-> s5-1 y))) @@ -750,7 +750,7 @@ robber-event-handler :trans (behavior () - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) ) diff --git a/goal_src/levels/snow/ice-cube.gc b/goal_src/levels/snow/ice-cube.gc index 15708cab0c..323db37e3c 100644 --- a/goal_src/levels/snow/ice-cube.gc +++ b/goal_src/levels/snow/ice-cube.gc @@ -785,13 +785,13 @@ (behavior () (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self collide-info)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self collide-info)) (none) ) @@ -1609,7 +1609,7 @@ ) (drop-pickup (-> self enemy-info) #t *entity-pool* (-> self enemy-info) 0) (clear-collide-with-as (-> self collide-info)) - (dummy-18 self) + (cleanup-for-death self) (let ((gp-1 (new 'stack 'joint-exploder-tuning 1))) (set! (-> gp-1 duration) (seconds 3)) (set! (-> gp-1 gravity) -327680.0) diff --git a/goal_src/levels/snow/snow-flutflut-obs.gc b/goal_src/levels/snow/snow-flutflut-obs.gc index 260b4a995c..ba3b03efeb 100644 --- a/goal_src/levels/snow/snow-flutflut-obs.gc +++ b/goal_src/levels/snow/snow-flutflut-obs.gc @@ -513,7 +513,7 @@ (eval-path-curve! (-> obj path) (-> obj appear-trans-top) - (if (logtest? (-> obj fact options) (fact-options fop3)) + (if (logtest? (-> obj fact options) (fact-options wrap-phase)) (get-current-phase (-> obj sync)) (get-current-phase-with-mirror (-> obj sync)) ) @@ -615,7 +615,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-override)) (set! (-> self root-override trans quad) (-> self appear-trans-top quad)) (transform-post) @@ -640,7 +640,7 @@ (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self root-override)) (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) (let ((s5-0 (new 'stack-no-clear 'vector)) diff --git a/goal_src/levels/snow/snow-obs.gc b/goal_src/levels/snow/snow-obs.gc index c97840ffd5..ee7324c77f 100644 --- a/goal_src/levels/snow/snow-obs.gc +++ b/goal_src/levels/snow/snow-obs.gc @@ -1930,7 +1930,7 @@ (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :exit @@ -1983,7 +1983,7 @@ (behavior () (logior! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #f) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (ja-channel-push! 1 22) (let ((gp-0 #t) (s5-0 #t) @@ -2068,7 +2068,7 @@ (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *snow-log-sg* '()) (logior! (-> obj skel status) 1) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (set! (-> obj root-override trans x) (+ -1024.0 (-> obj root-override trans x))) (set! (-> obj root-override trans y) (+ -4915.2 (-> obj root-override trans y))) (set-vector! (-> obj root-override scale) 1.5 1.0 1.5 1.0) diff --git a/goal_src/levels/snow/snow-ram-boss.gc b/goal_src/levels/snow/snow-ram-boss.gc index 60f791772f..7d2c33f9f1 100644 --- a/goal_src/levels/snow/snow-ram-boss.gc +++ b/goal_src/levels/snow/snow-ram-boss.gc @@ -1191,7 +1191,7 @@ (initialize-skeleton obj *ram-boss-sg* '()) (set! (-> obj draw origin-joint-index) (the-as uint 3)) (TODO-RENAME-45 obj *ram-boss-nav-enemy-info*) - (logclear! (-> obj enemy-info options) (fact-options fop1)) + (logclear! (-> obj enemy-info options) (fact-options has-power-cell)) (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 525) obj)) (set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 574) obj)) (set! (-> obj shield-jmod) (new 'process 'joint-mod-set-local obj 32 #f #f #t)) diff --git a/goal_src/levels/sunken/bully.gc b/goal_src/levels/sunken/bully.gc index ed96bb4ab0..510e836a8e 100644 --- a/goal_src/levels/sunken/bully.gc +++ b/goal_src/levels/sunken/bully.gc @@ -955,7 +955,7 @@ (defstate bully-die (bully) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (shut-down! (-> self neck)) (logclear! (-> self mask) (process-mask actor-pause)) (let ((gp-0 (get-process *default-dead-pool* bully-broken-cage #x4000))) @@ -989,7 +989,7 @@ ) ) (increment-success-for-hint (game-text-id sunken-bully-dive-hint)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (-> self child) (suspend) ) diff --git a/goal_src/levels/sunken/double-lurker.gc b/goal_src/levels/sunken/double-lurker.gc index 9df9e1d679..23d4c3c5f5 100644 --- a/goal_src/levels/sunken/double-lurker.gc +++ b/goal_src/levels/sunken/double-lurker.gc @@ -387,7 +387,7 @@ ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -684,7 +684,7 @@ ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -1263,7 +1263,7 @@ :code (behavior () (clear-collide-with-as (-> self collide-info)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) diff --git a/goal_src/levels/sunken/puffer.gc b/goal_src/levels/sunken/puffer.gc index 83771d4c8e..b743df03a4 100644 --- a/goal_src/levels/sunken/puffer.gc +++ b/goal_src/levels/sunken/puffer.gc @@ -155,7 +155,7 @@ (defmethod dummy-28 puffer ((obj puffer)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -588,7 +588,7 @@ (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) ) ) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.2)) ) (go puffer-patrol) @@ -630,7 +630,7 @@ (go puffer-idle) ) (cond - ((logtest? (-> self draw status) (draw-status drwf03)) + ((logtest? (-> self draw status) (draw-status was-drawn)) (set! (-> self last-on-screen-time) (-> *display* base-frame-counter)) ) (else @@ -744,7 +744,7 @@ (the-as uint (drop-pickup (-> self fact-info-override) #t *entity-pool* (-> self fact-info-override) 0)) ) ((= v1-0 'death-end) - (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status drwf01))))) + (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) @@ -755,7 +755,7 @@ ) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (shut-down! (-> self neck)) (logclear! (-> self mask) (process-mask actor-pause)) (ja-channel-push! 1 22) diff --git a/goal_src/levels/sunken/qbert-plat.gc b/goal_src/levels/sunken/qbert-plat.gc index 23387b71b9..9b01cd4aeb 100644 --- a/goal_src/levels/sunken/qbert-plat.gc +++ b/goal_src/levels/sunken/qbert-plat.gc @@ -279,13 +279,13 @@ :exit (behavior () (if (-> self on?) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) (none) ) :trans (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) ((-> (method-of-type rigid-body-platform rigid-body-platform-float) trans)) (let* ((v1-5 (-> self root-overlay riders)) (gp-1 (nonzero? (-> v1-5 num-riders))) @@ -307,7 +307,7 @@ ) ) (if (-> self on?) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) (none) ) diff --git a/goal_src/levels/sunken/sun-exit-chamber.gc b/goal_src/levels/sunken/sun-exit-chamber.gc index 340a0e8dda..ca0329ade0 100644 --- a/goal_src/levels/sunken/sun-exit-chamber.gc +++ b/goal_src/levels/sunken/sun-exit-chamber.gc @@ -380,7 +380,7 @@ (set! (-> gp-0 frame-num) 0.0) ) (while #t - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (if (and (and *target* (>= 16384.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) @@ -785,15 +785,15 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :code (behavior () (while #t (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root-override trans))) - (logclear! (-> self draw status) (draw-status drwf01)) - (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status hidden)) ) (suspend) ) @@ -861,7 +861,7 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :code @@ -876,8 +876,8 @@ ) (while #t (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root-override trans))) - (logclear! (-> self draw status) (draw-status drwf01)) - (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status hidden)) ) (suspend) ) @@ -1141,10 +1141,10 @@ (send-event (ppointer->process (-> self button)) 'untrigger) ) (when arg0 - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (dummy-20 self 1.0) (suspend) - (logclear! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status skip-bones)) ) (while #t (dummy-20 self 1.0) diff --git a/goal_src/levels/sunken/sun-iris-door.gc b/goal_src/levels/sunken/sun-iris-door.gc index ae4615be97..8ba2b1cedf 100644 --- a/goal_src/levels/sunken/sun-iris-door.gc +++ b/goal_src/levels/sunken/sun-iris-door.gc @@ -250,13 +250,13 @@ (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :exit (behavior () (restore-collide-with-as (-> self root-override)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/goal_src/levels/sunken/target-tube.gc b/goal_src/levels/sunken/target-tube.gc index f811774880..2db0cfb656 100644 --- a/goal_src/levels/sunken/target-tube.gc +++ b/goal_src/levels/sunken/target-tube.gc @@ -828,7 +828,7 @@ (set! (-> v1-30 control) 0.0) (set! (-> v1-30 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout)) ) - (dummy-9 gp-0 arg1) + (combine! gp-0 arg1) (when (= arg0 'attack) (pickup-collectable! (-> self fact-info-target) diff --git a/goal_src/levels/swamp/billy.gc b/goal_src/levels/swamp/billy.gc index 88dd168328..6fce71ad4c 100644 --- a/goal_src/levels/swamp/billy.gc +++ b/goal_src/levels/swamp/billy.gc @@ -227,7 +227,7 @@ 600 ) (send-event (ppointer->process (-> self billy)) 'billy-rat-die) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/swamp/kermit.gc b/goal_src/levels/swamp/kermit.gc index f7e68e8478..bcd064e98e 100644 --- a/goal_src/levels/swamp/kermit.gc +++ b/goal_src/levels/swamp/kermit.gc @@ -610,7 +610,7 @@ ) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -642,7 +642,7 @@ (-> gp-1 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/goal_src/levels/swamp/swamp-bat.gc b/goal_src/levels/swamp/swamp-bat.gc index e40de7cde1..ba71fc4ae9 100644 --- a/goal_src/levels/swamp/swamp-bat.gc +++ b/goal_src/levels/swamp/swamp-bat.gc @@ -453,7 +453,7 @@ swamp-bat-slave-event-handler (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/swamp/swamp-obs.gc b/goal_src/levels/swamp/swamp-obs.gc index e9ed6cc2f9..d6325bff95 100644 --- a/goal_src/levels/swamp/swamp-obs.gc +++ b/goal_src/levels/swamp/swamp-obs.gc @@ -250,7 +250,7 @@ (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!) ) ) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000))) (when s5-3 (let ((t9-11 (method-of-type part-tracker activate))) @@ -297,7 +297,7 @@ (until (< (get-current-phase (-> self sync)) 0.5) (suspend) ) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((s5-4 (get-process *default-dead-pool* part-tracker #x4000))) (when s5-4 (let ((t9-18 (method-of-type part-tracker activate))) @@ -417,7 +417,7 @@ :code (behavior () (process-entity-status! self (entity-perm-status complete) #t) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -732,7 +732,7 @@ (-> gp-1 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/goal_src/levels/title/title-obs.gc b/goal_src/levels/title/title-obs.gc index e45ad314bc..d78eda2ca0 100644 --- a/goal_src/levels/title/title-obs.gc +++ b/goal_src/levels/title/title-obs.gc @@ -421,8 +421,8 @@ :post (behavior () (if *progress-process* - (logior! (-> self draw status) (draw-status drwf05)) - (logclear! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) + (logclear! (-> self draw status) (draw-status skip-bones)) ) (let ((a3-0 (new-stack-vector0)) (a1-0 (new-stack-vector0)) diff --git a/goal_src/levels/training/training-obs.gc b/goal_src/levels/training/training-obs.gc index e8b67ba835..4e0db4d37a 100644 --- a/goal_src/levels/training/training-obs.gc +++ b/goal_src/levels/training/training-obs.gc @@ -997,7 +997,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1209,7 +1209,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/goal_src/levels/village1/assistant.gc b/goal_src/levels/village1/assistant.gc index 81e60a65dc..1e939d6641 100644 --- a/goal_src/levels/village1/assistant.gc +++ b/goal_src/levels/village1/assistant.gc @@ -48,7 +48,7 @@ (defmethod draw-npc-shadow assistant ((obj assistant)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -596,7 +596,7 @@ (go (method-of-object obj idle)) ) (else - (dummy-18 obj) + (cleanup-for-death obj) (deactivate obj) ) ) diff --git a/goal_src/levels/village1/explorer.gc b/goal_src/levels/village1/explorer.gc index b3ac3023a6..8b22d68701 100644 --- a/goal_src/levels/village1/explorer.gc +++ b/goal_src/levels/village1/explorer.gc @@ -47,7 +47,7 @@ (defmethod draw-npc-shadow explorer ((obj explorer)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/village1/village-obs.gc b/goal_src/levels/village1/village-obs.gc index db37b64f02..0a8cc9269b 100644 --- a/goal_src/levels/village1/village-obs.gc +++ b/goal_src/levels/village1/village-obs.gc @@ -348,8 +348,8 @@ (update! (-> self sound)) ) (if (= (-> self draw cur-lod) (-> self draw lod-set max-lod)) - (logior! (-> self draw status) (draw-status drwf06)) - (logclear! (-> self draw status) (draw-status drwf06)) + (logior! (-> self draw status) (draw-status do-not-check-distance)) + (logclear! (-> self draw status) (draw-status do-not-check-distance)) ) (none) ) @@ -455,13 +455,13 @@ (defmethod run-logic? windspinner ((obj windspinner)) (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) + (logtest? (-> obj draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) (vector-vector-distance (-> obj root trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -641,7 +641,7 @@ (+! (-> obj next-reflector-trans y) (res-lump-float a0-10 'height-info)) ) ) - (logior! (-> obj draw status) (draw-status drwf06)) + (logior! (-> obj draw status) (draw-status do-not-check-distance)) (go reflector-middle-idle) (none) ) diff --git a/goal_src/levels/village2/assistant-village2.gc b/goal_src/levels/village2/assistant-village2.gc index d4909e0f4d..c8832fdff9 100644 --- a/goal_src/levels/village2/assistant-village2.gc +++ b/goal_src/levels/village2/assistant-village2.gc @@ -81,7 +81,7 @@ (defmethod draw-npc-shadow assistant-levitator ((obj assistant-levitator)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/village2/swamp-blimp.gc b/goal_src/levels/village2/swamp-blimp.gc index dc49b67433..f945f37827 100644 --- a/goal_src/levels/village2/swamp-blimp.gc +++ b/goal_src/levels/village2/swamp-blimp.gc @@ -627,7 +627,7 @@ (defstate swamp-tetherrock-die (swamp-tetherrock) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (suspend) 0 @@ -639,7 +639,7 @@ :code (behavior () (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (when (= (get-task-status (-> self entity extra perm task)) (task-status invalid)) (if (not (-> self child)) @@ -741,7 +741,7 @@ (-> s4-1 ppointer) ) ) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (let* ((s4-2 (get-process *default-dead-pool* manipy #x4000)) (s4-3 (ppointer->handle (when s4-2 (let ((t9-24 (method-of-type manipy activate))) @@ -1008,7 +1008,7 @@ (defstate precursor-arm-die (precursor-arm) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (while #t (suspend) @@ -1035,7 +1035,7 @@ ) (else (set! (-> self y-offset) -40960.0) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) diff --git a/goal_src/levels/village2/village2-obs.gc b/goal_src/levels/village2/village2-obs.gc index 2e602a2366..3d4e835b1f 100644 --- a/goal_src/levels/village2/village2-obs.gc +++ b/goal_src/levels/village2/village2-obs.gc @@ -136,13 +136,13 @@ (defstate pontoon-hidden (pontoon) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-overlay)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self root-overlay)) (none) ) @@ -165,7 +165,7 @@ (defstate pontoon-die (pontoon) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -178,7 +178,7 @@ (let ((v1-0 arg2)) (the-as object (cond ((= v1-0 'die) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (else @@ -196,7 +196,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v1-0 arg2)) (the-as object (when (= v1-0 'die) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) @@ -538,7 +538,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v1-0 arg2)) (the-as object (when (= v1-0 'end-mode) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) @@ -546,7 +546,7 @@ ) :enter (behavior ((arg0 handle)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (logclear! (-> self mask) (process-mask actor-pause)) (none) ) @@ -570,7 +570,7 @@ :code (behavior ((arg0 handle)) (clone-anim arg0 3 #t "") - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -587,14 +587,14 @@ ) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :code (behavior () (while #t (when (and (nonzero? (-> self task)) (task-closed? (the-as game-task (-> self task)) (task-status need-resolution))) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (logior! (-> self mask) (process-mask sleep)) @@ -706,7 +706,7 @@ (let ((v1-2 (-> self skel root-channel 0))) (set! (-> v1-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self root-override trans quad) (-> self entity extra trans quad)) (vector-reset! (-> self draw origin)) (logior! (-> self skel status) 1) @@ -805,7 +805,7 @@ (behavior ((arg0 handle)) (clone-anim arg0 3 #t "") (format 0 "ERROR: fireboulder-be-clone ended~%") - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -1095,7 +1095,7 @@ (defstate exit-chamber-dummy-wait-to-appear (exit-chamber-dummy) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (not (skip-reminder? self)) (suspend) ) @@ -1117,7 +1117,7 @@ (defstate exit-chamber-dummy-idle (exit-chamber-dummy) :code (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (let ((gp-0 0)) (while (< gp-0 2) (if (skip-reminder? self) @@ -1170,7 +1170,7 @@ ) (set! (-> s5-1 frame-num) 0.0) ) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (go exit-chamber-dummy-wait-to-appear) (none) ) @@ -1386,7 +1386,7 @@ (defbehavior ogreboss-village2-trans ogreboss-village2 () (when (= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (none) diff --git a/goal_src/levels/village2/warrior.gc b/goal_src/levels/village2/warrior.gc index 975839de84..6ab420da5f 100644 --- a/goal_src/levels/village2/warrior.gc +++ b/goal_src/levels/village2/warrior.gc @@ -44,7 +44,7 @@ (defmethod draw-npc-shadow warrior ((obj warrior)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/village3/assistant-village3.gc b/goal_src/levels/village3/assistant-village3.gc index 010d487671..6886794078 100644 --- a/goal_src/levels/village3/assistant-village3.gc +++ b/goal_src/levels/village3/assistant-village3.gc @@ -44,7 +44,7 @@ (defmethod draw-npc-shadow assistant-villagec ((obj assistant-villagec)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/village3/miners.gc b/goal_src/levels/village3/miners.gc index c85a90a068..2b784768cb 100644 --- a/goal_src/levels/village3/miners.gc +++ b/goal_src/levels/village3/miners.gc @@ -74,7 +74,7 @@ (defmethod draw-npc-shadow minertall ((obj minertall)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -255,7 +255,7 @@ (defmethod draw-npc-shadow minershort ((obj minershort)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/goal_src/levels/village3/sage-village3.gc b/goal_src/levels/village3/sage-village3.gc index 11b6a544b7..05d62b3e7e 100644 --- a/goal_src/levels/village3/sage-village3.gc +++ b/goal_src/levels/village3/sage-village3.gc @@ -319,7 +319,7 @@ (defmethod draw-npc-shadow sage-villagec ((obj sage-villagec)) (let ((v1-1 (-> obj draw shadow-ctrl))) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status was-drawn))) (set! (-> v1-1 settings flags) (logand -9 (-> v1-1 settings flags))) (set! (-> v1-1 settings flags) (logand -5 (-> v1-1 settings flags))) (set! (-> v1-1 settings bot-plane w) 20480.0) diff --git a/goal_src/levels/village_common/oracle.gc b/goal_src/levels/village_common/oracle.gc index 74b5aefd1f..2ca653a7ad 100644 --- a/goal_src/levels/village_common/oracle.gc +++ b/goal_src/levels/village_common/oracle.gc @@ -262,7 +262,7 @@ (set! (-> obj tasks) (get-task-control (the-as game-task (-> obj first-task)))) (set! (-> obj right-eye-cell) (the-as handle #f)) (set! (-> obj left-eye-cell) (the-as handle #f)) - (logior! (-> obj draw status) (draw-status drwf05)) + (logior! (-> obj draw status) (draw-status skip-bones)) (let ((s4-0 (new 'stack-no-clear 'vector)) (s5-1 (lambda :behavior oracle () diff --git a/test/decompiler/reference/engine/anim/aligner_REF.gc b/test/decompiler/reference/engine/anim/aligner_REF.gc index 9c748d9d20..3f53aca505 100644 --- a/test/decompiler/reference/engine/anim/aligner_REF.gc +++ b/test/decompiler/reference/engine/anim/aligner_REF.gc @@ -131,7 +131,7 @@ (defmethod TODO-RENAME-10 align-control ((obj align-control) (arg0 int) (arg1 float) (arg2 float) (arg3 float)) (when (zero? (logand (-> obj flags) 1)) (let* ((a0-1 (-> obj process)) - (t9-0 (method-of-object a0-1 dummy-16)) + (t9-0 (method-of-object a0-1 apply-alignment)) (v1-4 (-> obj delta)) (t1-0 (new 'stack-no-clear 'vector)) ) @@ -139,7 +139,7 @@ (set! (-> t1-0 y) arg2) (set! (-> t1-0 z) arg3) (set! (-> t1-0 w) 1.0) - (t9-0 a0-1 arg0 (the-as (inline-array vector) v1-4) t1-0) + (t9-0 a0-1 arg0 v1-4 t1-0) ) ) (-> obj process root) diff --git a/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc b/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc index dd6e8cb97a..e3c29f5e56 100644 --- a/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc +++ b/test/decompiler/reference/engine/camera/pov-camera-h_REF.gc @@ -3,15 +3,15 @@ ;; definition of type pov-camera (deftype pov-camera (process-drawable) - ((cspace-array cspace-array :offset 112) - (flags int32 :offset-assert 176) - (debounce-start-time time-frame :offset-assert 184) - (notify-handle handle :offset-assert 192) - (anim-name string :offset-assert 200) - (command-list pair :offset-assert 204) - (mask-to-clear uint32 :offset-assert 208) - (music-volume-movie float :offset-assert 212) - (sfx-volume-movie float :offset-assert 216) + ((cspace-array cspace-array :offset 112) + (flags pov-camera-flag :offset-assert 176) + (debounce-start-time time-frame :offset-assert 184) + (notify-handle handle :offset-assert 192) + (anim-name string :offset-assert 200) + (command-list pair :offset-assert 204) + (mask-to-clear uint32 :offset-assert 208) + (music-volume-movie float :offset-assert 212) + (sfx-volume-movie float :offset-assert 216) ) :heap-base #x70 :method-count-assert 30 @@ -23,9 +23,9 @@ (pov-camera-playing () _type_ :state 22) (pov-camera-start-playing () _type_ :state 23) (pov-camera-startup () _type_ :state 24) - (TODO-RENAME-25 (_type_) symbol 25) + (check-for-abort (_type_) symbol 25) (target-grabbed? (_type_) symbol 26) - (dummy-27 () none 27) + (pre-startup-callback (_type_) none 27) (target-released? () symbol 28) (set-stack-size! (_type_) none 29) ) diff --git a/test/decompiler/reference/engine/camera/pov-camera_REF.gc b/test/decompiler/reference/engine/camera/pov-camera_REF.gc index 934b4f1ce2..cf1cb8f61a 100644 --- a/test/decompiler/reference/engine/camera/pov-camera_REF.gc +++ b/test/decompiler/reference/engine/camera/pov-camera_REF.gc @@ -2,15 +2,15 @@ (in-package goal) ;; definition for method 25 of type pov-camera -(defmethod TODO-RENAME-25 pov-camera ((obj pov-camera)) +(defmethod check-for-abort pov-camera ((obj pov-camera)) (when (or (and (>= (- (-> *display* base-frame-counter) (-> obj debounce-start-time)) (seconds 0.2)) (cpad-pressed? 0 triangle) ) - (logtest? (-> obj flags) 2) + (logtest? (-> obj flags) (pov-camera-flag allow-abort)) ) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) - (when (logtest? (-> obj flags) 1) + (when (logtest? (-> obj flags) (pov-camera-flag notify-of-abort)) (send-event (handle->process (-> obj notify-handle)) 'notify 'abort-request) #t ) @@ -121,8 +121,8 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('abort) - (when (logtest? (-> self flags) 1) - (logior! (-> self flags) 2) + (when (logtest? (-> self flags) (pov-camera-flag notify-of-abort)) + (logior! (-> self flags) (pov-camera-flag allow-abort)) (if (= (-> self anim-name type) string) (go-virtual pov-camera-abort) ) @@ -180,7 +180,7 @@ ) ) (until (ja-done? 0) - (TODO-RENAME-25 self) + (check-for-abort self) (suspend) (let ((a0-6 (-> self skel root-channel 0))) (set! (-> a0-6 param 0) (the float (+ (-> a0-6 frame-group data 0 length) -1))) @@ -194,7 +194,7 @@ (the-as spool-anim (-> self anim-name)) (the-as art-joint-anim #f) (the-as art-joint-anim #f) - (method-of-object self TODO-RENAME-25) + (method-of-object self check-for-abort) ) ) ) @@ -216,7 +216,7 @@ :virtual #t :enter (behavior () - (logior! (-> self flags) 2) + (logior! (-> self flags) (pov-camera-flag allow-abort)) (none) ) :code @@ -240,7 +240,7 @@ (send-event (handle->process (-> self notify-handle)) 'notify 'die) (suspend) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -248,7 +248,7 @@ ;; definition for method 27 of type pov-camera ;; INFO: Return type mismatch int vs none. -(defmethod dummy-27 pov-camera () +(defmethod pre-startup-callback pov-camera ((obj pov-camera)) 0 (none) ) @@ -262,7 +262,7 @@ ;; definition for function pov-camera-init-by-other ;; INFO: Return type mismatch object vs none. ;; Used lq/sq -(defbehavior pov-camera-init-by-other pov-camera ((arg0 vector) (arg1 skeleton-group) (arg2 string) (arg3 int) (arg4 process-drawable) (arg5 pair)) +(defbehavior pov-camera-init-by-other pov-camera ((arg0 vector) (arg1 skeleton-group) (arg2 string) (arg3 pov-camera-flag) (arg4 process-drawable) (arg5 pair)) (set-stack-size! self) (set! (-> *game-info* pov-camera-handle) (process->handle self)) (set! (-> self flags) arg3) @@ -277,7 +277,7 @@ (logclear! (-> self mask) (process-mask actor-pause movie enemy platform projectile)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg0 quad)) - (when (logtest? (-> self flags) 4) + (when (logtest? (-> self flags) (pov-camera-flag inherit-orientation)) (let ((v1-20 (if (and (nonzero? arg4) (type-type? (-> arg4 type) process-drawable)) arg4 ) @@ -287,7 +287,7 @@ ) ) (initialize-skeleton self arg1 '()) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (logior! (-> self skel status) 1) (set! (-> self anim-name) arg2) (cond @@ -332,7 +332,7 @@ ) ) ) - ((method-of-object self dummy-27)) + (pre-startup-callback self) (go-virtual pov-camera-startup) (none) ) diff --git a/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc b/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc index 5620047d12..89b017002a 100644 --- a/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-mesh-h_REF.gc @@ -61,8 +61,8 @@ (should-push-away-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 11) (sphere-on-platform-test (_type_ collide-mesh-cache-tri collide-tri-result vector float) float 12) (populate-cache! (_type_ collide-mesh-cache-tri matrix) none 13) - (dummy-14 (_type_ object object) none 14) - (dummy-15 (_type_ object object object) none 15) + (collide-mesh-math-1 (_type_ object object) none 14) + (collide-mesh-math-2 (_type_ object object object) none 15) ) ) diff --git a/test/decompiler/reference/engine/data/art-h_REF.gc b/test/decompiler/reference/engine/data/art-h_REF.gc index 7ffaf0d5f4..de0e24fdc3 100644 --- a/test/decompiler/reference/engine/data/art-h_REF.gc +++ b/test/decompiler/reference/engine/data/art-h_REF.gc @@ -435,7 +435,7 @@ :flag-assert #xc000000bc (:methods (new (symbol type process art-joint-geo) _type_ 0) - (dummy-9 (_type_) vector 9) + (get-skeleton-origin (_type_) vector 9) (lod-set! (_type_ int) none 10) (lods-assign! (_type_ lod-set) none 11) ) @@ -488,7 +488,7 @@ ) ;; definition for method 9 of type draw-control -(defmethod dummy-9 draw-control ((obj draw-control)) +(defmethod get-skeleton-origin draw-control ((obj draw-control)) (-> obj skeleton bones 0 transform vector 3) ) diff --git a/test/decompiler/reference/engine/debug/anim-tester_REF.gc b/test/decompiler/reference/engine/debug/anim-tester_REF.gc index b13ae9312e..4db1852ca4 100644 --- a/test/decompiler/reference/engine/debug/anim-tester_REF.gc +++ b/test/decompiler/reference/engine/debug/anim-tester_REF.gc @@ -2754,7 +2754,7 @@ ) ;; definition for function anim-tester-load-object-seqs -(defun anim-tester-load-object-seqs () +(defun anim-tester-load-object-seqs ((arg0 anim-tester) (arg1 string)) #f ) @@ -2873,10 +2873,7 @@ (if s0-0 (anim-test-obj-remove-invalid s2-0) ) - (let ((t9-1 anim-tester-load-object-seqs)) - (-> sv-96 name) - (t9-1) - ) + (anim-tester-load-object-seqs arg0 (-> sv-96 name)) (set! s2-0 (the-as anim-test-obj (glst-find-node-by-name (-> arg0 obj-list) (-> sv-96 name)))) (set! s0-0 (if s2-0 #t diff --git a/test/decompiler/reference/engine/draw/drawable_REF.gc b/test/decompiler/reference/engine/draw/drawable_REF.gc index 0103f68786..21f40dc2b0 100644 --- a/test/decompiler/reference/engine/draw/drawable_REF.gc +++ b/test/decompiler/reference/engine/draw/drawable_REF.gc @@ -569,8 +569,8 @@ ) (init-vf0-vector) (set! sv-16 arg0) - (logclear! (-> arg1 status) (draw-status drwf03)) - (when (zero? (logand (-> arg1 status) (draw-status drwf01 drwf02 drwf04))) + (logclear! (-> arg1 status) (draw-status was-drawn)) + (when (zero? (logand (-> arg1 status) (draw-status hidden no-anim no-skeleton-update))) (let ((s4-0 (the-as vector (+ 48 (the-as int (the-as terrain-context #x70000000))))) (s2-0 (the-as vu-lights (+ 64 (the-as int (the-as terrain-context #x70000000))))) (s3-0 *time-of-day-context*) @@ -768,7 +768,7 @@ (let ((v1-64 (-> arg1 sink-group level)) (a0-26 (+ (-> arg1 sink-group merc-sink foreground-texture-page) 6)) ) - (when (zero? (logand (-> arg1 status) (draw-status drwf06))) + (when (zero? (logand (-> arg1 status) (draw-status do-not-check-distance))) (if (< cam-dist (-> v1-64 closest-object a0-26)) (set! (-> v1-64 closest-object a0-26) cam-dist) ) @@ -795,13 +795,13 @@ (logior! (-> arg1 status) (draw-status needs-clip)) (logclear! (-> arg1 status) (draw-status needs-clip)) ) - (logior! (-> arg1 status) (draw-status drwf03)) - (if (logtest? (-> arg1 status) (draw-status drwf05)) + (logior! (-> arg1 status) (draw-status was-drawn)) + (if (logtest? (-> arg1 status) (draw-status skip-bones)) (return #f) ) (draw-bones arg1 arg3 cam-dist) ) - (when (and (< lod-to-use (-> arg1 cur-lod)) (logtest? (-> arg1 status) (draw-status drwf07))) + (when (and (< lod-to-use (-> arg1 cur-lod)) (logtest? (-> arg1 status) (draw-status has-joint-channels))) (let ((v1-82 *matrix-engine*)) (set! (-> v1-82 (-> v1-82 length)) (process->handle sv-16)) (+! (-> v1-82 length) 1) @@ -847,8 +847,8 @@ ;; INFO: Return type mismatch int vs none. ;; Used lq/sq (defun dma-add-process-drawable-hud ((arg0 process-drawable) (arg1 draw-control) (arg2 symbol) (arg3 dma-buffer)) - (logclear! (-> arg1 status) (draw-status drwf03)) - (when (zero? (logand (-> arg1 status) (draw-status drwf01 drwf02 drwf04))) + (logclear! (-> arg1 status) (draw-status was-drawn)) + (when (zero? (logand (-> arg1 status) (draw-status hidden no-anim no-skeleton-update))) (let ((v1-6 (the-as vu-lights (+ 64 #x70000000))) (a0-3 *hud-lights*) ) @@ -861,7 +861,7 @@ (set! (-> v1-6 ambient quad) (-> a0-3 ambient quad)) ) (lod-set! arg1 0) - (logior! (-> arg1 status) (draw-status drwf03)) + (logior! (-> arg1 status) (draw-status was-drawn)) (draw-bones-hud arg1 arg3) ) 0 diff --git a/test/decompiler/reference/engine/draw/process-drawable_REF.gc b/test/decompiler/reference/engine/draw/process-drawable_REF.gc index 387b9c30e0..ae65c90b56 100644 --- a/test/decompiler/reference/engine/draw/process-drawable_REF.gc +++ b/test/decompiler/reference/engine/draw/process-drawable_REF.gc @@ -287,7 +287,7 @@ ;; Used lq/sq (defmethod do-joint-math! process-drawable ((obj process-drawable)) (cond - ((logtest? (-> obj draw status) (draw-status drwf01 drwf02)) + ((logtest? (-> obj draw status) (draw-status hidden no-anim)) ) ((zero? (-> obj skel)) (matrix<-transformq+trans! @@ -365,7 +365,7 @@ ;; definition for method 18 of type process-drawable ;; INFO: Return type mismatch int vs none. -(defmethod dummy-18 process-drawable ((obj process-drawable)) +(defmethod cleanup-for-death process-drawable ((obj process-drawable)) (if (type-type? (-> obj root type) collide-shape) (clear-collide-with-as (the-as collide-shape (-> obj root))) ) @@ -482,7 +482,7 @@ (set! s3-0 v0-3) ) (let ((v1-26 s3-0)) - (set! (-> v1-26 status) (draw-status drwf04)) + (set! (-> v1-26 status) (draw-status no-skeleton-update)) (set! (-> v1-26 art-group) s4-0) (set! (-> v1-26 jgeo) (the-as art-joint-geo sv-16)) (set! (-> v1-26 force-lod) -1) @@ -543,7 +543,7 @@ (let ((a2-10 (res-lump-value (-> sv-16 extra) 'joint-channel int :default (the-as uint128 6)))) (cond ((> a2-10 0) - (logior! (-> s3-0 status) (draw-status drwf07)) + (logior! (-> s3-0 status) (draw-status has-joint-channels)) (let ((v0-13 (new 'process 'joint-control a2-10))) (set! (-> obj skel) v0-13) (let ((s2-1 v0-13)) @@ -616,7 +616,7 @@ ;; definition for method 16 of type process-drawable ;; INFO: Return type mismatch trsqv vs collide-shape. -(defmethod dummy-16 process-drawable ((obj process-drawable) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) +(defmethod apply-alignment process-drawable ((obj process-drawable) (arg0 int) (arg1 transformq) (arg2 vector)) (when (logtest? arg0 7) (let* ((body-T-world (quaternion->matrix (new 'stack-no-clear 'matrix) (-> obj root quat))) (world-T-body (matrix-transpose! (new 'stack-no-clear 'matrix) body-T-world)) @@ -627,7 +627,7 @@ (set-vector! grav-rt-body 0.0 0.0 0.0 1.0) ) (when (logtest? arg0 1) - (set! (-> vel-rt-body x) (+ (* (-> arg1 0 x) (-> arg2 x) (-> *display* frames-per-second)) + (set! (-> vel-rt-body x) (+ (* (-> arg1 trans x) (-> arg2 x) (-> *display* frames-per-second)) (* (-> grav-rt-body x) (-> *display* seconds-per-frame)) ) ) @@ -635,14 +635,14 @@ (set! (-> vel-rt-body z) 0.0) ) ) - (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 0 y) 0.0)))) - (set! (-> vel-rt-body y) (+ (* (-> arg1 0 y) (-> arg2 y) (-> *display* frames-per-second)) + (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 trans y) 0.0)))) + (set! (-> vel-rt-body y) (+ (* (-> arg1 trans y) (-> arg2 y) (-> *display* frames-per-second)) (* (-> grav-rt-body y) (-> *display* seconds-per-frame)) ) ) ) (when (logtest? arg0 4) - (set! (-> vel-rt-body z) (+ (* (-> arg1 0 z) (-> arg2 z) (-> *display* frames-per-second)) + (set! (-> vel-rt-body z) (+ (* (-> arg1 trans z) (-> arg2 z) (-> *display* frames-per-second)) (* (-> grav-rt-body z) (-> *display* seconds-per-frame)) ) ) @@ -654,7 +654,7 @@ ) ) (if (logtest? arg0 16) - (quaternion-normalize! (quaternion*! (-> obj root quat) (-> obj root quat) (the-as quaternion (-> arg1 1)))) + (quaternion-normalize! (quaternion*! (-> obj root quat) (-> obj root quat) (-> arg1 quat))) ) (the-as collide-shape (-> obj root)) ) @@ -924,12 +924,12 @@ ;; INFO: Return type mismatch int vs none. ;; WARN: Unsupported inline assembly instruction kind - [lw ra, return-from-thread(s7)] ;; WARN: Unsupported inline assembly instruction kind - [jr ra] -(defmethod dummy-19 process-drawable ((obj process-drawable)) +(defmethod evaluate-joint-control process-drawable ((obj process-drawable)) (local-vars (s7-0 none) (ra-0 int)) (let ((gp-0 (-> obj skel))) (label cfg-1) (let ((s4-0 (-> gp-0 active-channels))) - (b! (logtest? (-> obj draw status) (draw-status drwf01)) cfg-27 :delay (empty-form)) + (b! (logtest? (-> obj draw status) (draw-status hidden)) cfg-27 :delay (empty-form)) (let ((s3-0 0)) (b! #t cfg-13 :delay (nop!)) (label cfg-3) @@ -969,7 +969,7 @@ (set! (-> gp-0 channel v1-26 frame-interp) (fmax 0.0 (fmin 1.0 (-> gp-0 channel v1-26 frame-interp)))) ) (if (or (zero? s4-0) (not (-> gp-0 root-channel 0 frame-group))) - (logior! (-> obj draw status) (draw-status drwf02)) + (logior! (-> obj draw status) (draw-status no-anim)) ) ) (if (logtest? (-> obj skel status) 72) @@ -994,10 +994,10 @@ ;; WARN: Expression building failed: Function ja-post has a return type of none, but the expression builder found a return statement. (defbehavior ja-post process-drawable () (when (nonzero? (-> self draw)) - (let ((gp-1 (logtest? (-> self draw status) (draw-status drwf04)))) - (logclear! (-> self draw status) (draw-status drwf02 drwf04)) + (let ((gp-1 (logtest? (-> self draw status) (draw-status no-skeleton-update)))) + (logclear! (-> self draw status) (draw-status no-anim no-skeleton-update)) (when (nonzero? (-> self skel)) - (dummy-19 self) + (evaluate-joint-control self) (when (or (logtest? (-> self skel status) 1) gp-1) (do-joint-math! self) (if (and gp-1 (type-type? (-> self root type) collide-shape)) diff --git a/test/decompiler/reference/engine/entity/entity_REF.gc b/test/decompiler/reference/engine/entity/entity_REF.gc index aad655f26a..30bfba5d46 100644 --- a/test/decompiler/reference/engine/entity/entity_REF.gc +++ b/test/decompiler/reference/engine/entity/entity_REF.gc @@ -332,13 +332,13 @@ 32 ) ) - (a3-0 (if (and proc-draw (logtest? (-> proc-draw draw status) (draw-status drwf03))) + (a3-0 (if (and proc-draw (logtest? (-> proc-draw draw status) (draw-status was-drawn))) 100 32 ) ) (t0-0 (cond - ((and proc-draw (logtest? (-> proc-draw draw status) (draw-status drwf03))) + ((and proc-draw (logtest? (-> proc-draw draw status) (draw-status was-drawn))) (let ((v1-15 (-> proc-draw draw cur-lod))) (cond ((zero? v1-15) @@ -1599,7 +1599,7 @@ (vector-vector-distance (-> obj root trans) (math-camera-pos)) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/test/decompiler/reference/engine/game/collectables_REF.gc b/test/decompiler/reference/engine/game/collectables_REF.gc index 6896ede7cc..9f3ea6ed5e 100644 --- a/test/decompiler/reference/engine/game/collectables_REF.gc +++ b/test/decompiler/reference/engine/game/collectables_REF.gc @@ -1295,13 +1295,13 @@ (defmethod run-logic? money ((obj money)) (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) + (logtest? (-> obj draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -1616,7 +1616,7 @@ ) (when (nonzero? (-> self part)) (cond - ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) + ((logtest? (-> self draw status) (draw-status hidden no-anim)) (kill-and-free-particles (-> self part)) (if (nonzero? (-> self sound)) (kill-and-free-particles (-> self part)) @@ -1808,7 +1808,7 @@ (when (and (logtest? (-> self skel status) 32) (and (>= (ja-aframe-num 0) f30-0) (-> self state-object))) (set! (-> self state-object) #f) (kill-and-free-particles (-> self part)) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (if (not (or (logtest? (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) 4096 @@ -1828,7 +1828,7 @@ (sound-play-by-name (static-sound-name "pu-powercell") (new-sound-id) 1024 0 0 1 #t) (clear-collide-with-as (-> self root-override)) (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (process-entity-status! self (entity-perm-status dead) #t) (stop! (-> self sound)) (while (handle->process (-> *game-info* other-camera-handle)) @@ -2361,7 +2361,7 @@ (let ((v1-20 (-> self skel root-channel 0))) (set! (-> v1-20 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (vector-reset! (-> self draw origin)) (go-virtual wait) ) diff --git a/test/decompiler/reference/engine/game/crates_REF.gc b/test/decompiler/reference/engine/game/crates_REF.gc index 3fb0bdb7f0..0368af49d5 100644 --- a/test/decompiler/reference/engine/game/crates_REF.gc +++ b/test/decompiler/reference/engine/game/crates_REF.gc @@ -625,7 +625,7 @@ (case (-> arg3 param 1) (('explode 'darkeco 'eco-yellow 'bonk 'tube 'flut-bonk 'flut-attack 'racer) (send-event arg0 'get-attack-count 1) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (increment-success-for-hint (game-text-id sidekick-speech-hint-crate-steel)) (level-hint-spawn (game-text-id sidekick-speech-crate-steel-break1) @@ -970,7 +970,7 @@ (suspend) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (case (-> self look) (('iron) (sound-play-by-name (static-sound-name "icrate-break") (new-sound-id) 1024 0 0 1 #t) @@ -1149,7 +1149,7 @@ ) ) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (drop-pickup (-> self fact) #t self (the-as fact-info #f) 0) (set! (-> self child-count) (+ (process-count self) -1)) (process-entity-status! self (entity-perm-status bit-4) #t) @@ -1294,23 +1294,23 @@ ) (('none) (initialize-skeleton obj *crate-wood-sg* '()) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) ) (else (initialize-skeleton obj *crate-wood-sg* '()) ) ) (cond - ((logtest? (fact-options fop16) (-> obj fact options)) + ((logtest? (fact-options indestructible) (-> obj fact options)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense indestructible)) ) - ((logtest? (-> obj fact options) (fact-options fop15)) + ((logtest? (-> obj fact options) (fact-options strong-attack)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense strong-attack)) ) - ((logtest? (-> obj fact options) (fact-options fop14)) + ((logtest? (-> obj fact options) (fact-options normal-attack)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense normal-attack)) ) - ((logtest? (-> obj fact options) (fact-options fop13)) + ((logtest? (-> obj fact options) (fact-options touch)) (set! (-> obj root-override root-prim prim-core offense) (collide-offense touch)) ) ) diff --git a/test/decompiler/reference/engine/game/game-h_REF.gc b/test/decompiler/reference/engine/game/game-h_REF.gc index 4504bfb0bd..273b6c2fcb 100644 --- a/test/decompiler/reference/engine/game/game-h_REF.gc +++ b/test/decompiler/reference/engine/game/game-h_REF.gc @@ -26,10 +26,10 @@ (:methods (initialize-skeleton (_type_ skeleton-group pair) none 14) (initialize-skeleton-by-name (_type_ string object) _type_ 15) - (dummy-16 (_type_ int (inline-array vector) vector) collide-shape 16) + (apply-alignment (_type_ int transformq vector) collide-shape 16) (do-joint-math! (_type_) none 17) - (dummy-18 (_type_) none 18) - (dummy-19 (_type_) none 19) + (cleanup-for-death (_type_) none 18) + (evaluate-joint-control (_type_) none 19) ) (:states (process-drawable-art-error string) @@ -144,7 +144,7 @@ :size-assert #x68 :flag-assert #xa00000068 (:methods - (dummy-9 (_type_ attack-info) none 9) + (combine! (_type_ attack-info) none 9) ) ) diff --git a/test/decompiler/reference/engine/game/generic-obs-h_REF.gc b/test/decompiler/reference/engine/game/generic-obs-h_REF.gc index a07c3ccbbb..a7ed5cd29b 100644 --- a/test/decompiler/reference/engine/game/generic-obs-h_REF.gc +++ b/test/decompiler/reference/engine/game/generic-obs-h_REF.gc @@ -63,7 +63,7 @@ :size-assert #xd0 :flag-assert #x15006000d0 (:methods - (dummy-20 (_type_) symbol 20) + (is-visible? (_type_) symbol 20) ) (:states part-spawner-active @@ -156,7 +156,7 @@ :size-assert #xe0 :flag-assert #xf007000e0 (:methods - (dummy-14 (_type_ pair) process 14) + (eval (_type_ pair) process 14) ) (:states camera-tracker-process diff --git a/test/decompiler/reference/engine/game/generic-obs_REF.gc b/test/decompiler/reference/engine/game/generic-obs_REF.gc index eca7280a2b..6c3f33b037 100644 --- a/test/decompiler/reference/engine/game/generic-obs_REF.gc +++ b/test/decompiler/reference/engine/game/generic-obs_REF.gc @@ -37,9 +37,9 @@ (if (logtest? (-> (the-as process-drawable s5-0) skel status) 32) (logior! (-> self skel status) 32) ) - (logclear! (-> self draw status) (draw-status drwf01 drwf02)) + (logclear! (-> self draw status) (draw-status hidden no-anim)) (if (not (-> self skel root-channel 0 frame-group)) - (logior! (-> self draw status) (draw-status drwf02)) + (logior! (-> self draw status) (draw-status no-anim)) ) (let* ((s5-1 self) (v1-37 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) manipy)) @@ -48,7 +48,7 @@ ) ) (if (and manipy (not (-> (the-as manipy v1-37) draw?))) - (logior! (-> self draw status) (draw-status drwf02)) + (logior! (-> self draw status) (draw-status no-anim)) ) ) (do-joint-math! self) @@ -65,7 +65,7 @@ ) ) (else - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (ja-post) ) ) @@ -397,8 +397,8 @@ (set! (-> self draw?) (the-as symbol (-> arg3 param 0))) (cond ((-> arg3 param 0) - (let ((v1-47 (logtest? (-> self draw status) (draw-status drwf01)))) - (logclear! (-> self draw status) (draw-status drwf01)) + (let ((v1-47 (logtest? (-> self draw status) (draw-status hidden)))) + (logclear! (-> self draw status) (draw-status hidden)) (when v1-47 (cond ((nonzero? (-> self skel)) @@ -417,7 +417,7 @@ ) ) (else - (set! v0-0 (the-as none (logior (-> self draw status) (draw-status drwf01)))) + (set! v0-0 (the-as none (logior (-> self draw status) (draw-status hidden)))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) @@ -1037,7 +1037,7 @@ ;; definition for method 14 of type camera-tracker ;; INFO: Return type mismatch object vs process. -(defmethod dummy-14 camera-tracker ((obj camera-tracker) (arg0 pair)) +(defmethod eval camera-tracker ((obj camera-tracker) (arg0 pair)) (with-pp (let ((gp-0 (the-as object #f))) (cond @@ -1051,15 +1051,15 @@ (('print) (set! gp-0 (car s4-0)) (if (pair? gp-0) - (set! gp-0 (dummy-14 obj (the-as pair gp-0))) + (set! gp-0 (eval obj (the-as pair gp-0))) ) (format #t "~A MESSAGE (~D): ~A~%" obj (-> *display* base-frame-counter) gp-0) ) (('while) (let ((s3-0 (car s4-0))) - (while (dummy-14 obj (the-as pair s3-0)) + (while (eval obj (the-as pair s3-0)) (let* ((s2-0 (cdr s4-0)) (a1-3 (car s2-0))) (while (not (null? s2-0)) - (set! gp-0 (dummy-14 obj (the-as pair a1-3))) + (set! gp-0 (eval obj (the-as pair a1-3))) (set! s2-0 (cdr s2-0)) (set! a1-3 (car s2-0)) ) @@ -1069,9 +1069,9 @@ ) (('until) (let ((s3-1 (car s4-0))) - (while (not (dummy-14 obj (the-as pair s3-1))) + (while (not (eval obj (the-as pair s3-1))) (let* ((s2-1 (cdr s4-0)) (a1-5 (car s2-1))) (while (not (null? s2-1)) - (set! gp-0 (dummy-14 obj (the-as pair a1-5))) + (set! gp-0 (eval obj (the-as pair a1-5))) (set! s2-1 (cdr s2-1)) (set! a1-5 (car s2-1)) ) @@ -1080,7 +1080,7 @@ ) ) (('not) - (set! gp-0 (not (dummy-14 obj (the-as pair (car s4-0))))) + (set! gp-0 (not (eval obj (the-as pair (car s4-0))))) ) (('wait-for 'wait 'suspend) (let ((s5-1 (command-get-time (car s4-0) 1)) @@ -1125,7 +1125,7 @@ ) ) (('work-set!) - (set! gp-0 (process->handle (dummy-14 obj (the-as pair (car s4-0))))) + (set! gp-0 (process->handle (eval obj (the-as pair (car s4-0))))) (set! (-> obj work-process) (the-as handle gp-0)) ) (('grab) @@ -1262,7 +1262,7 @@ ) (else (while (not (null? (-> self script-line))) - (dummy-14 self (the-as pair (-> self script-line car))) + (eval self (the-as pair (-> self script-line car))) (set! (-> self script-line) (the-as pair (-> self script-line cdr))) ) ) @@ -1363,7 +1363,7 @@ ) (cond ((and a0-1 (or (= (-> a0-1 display?) 'special) (= (-> a0-1 display?) 'special-vis))) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (when (nonzero? (-> self skel)) (let ((a0-5 (-> self skel root-channel 0))) (set! (-> a0-5 param 0) 1.0) @@ -1372,13 +1372,13 @@ ) ) ((or (and a0-1 (= (-> a0-1 status) 'active)) (= v1-3 'firecanyon)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) ((and (= (-> self level) 'firecanyon) (< (-> (camera-pos) y) 327680.0)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) (else - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (if (nonzero? (-> self part)) (spawn (-> self part) (-> self root trans)) ) @@ -1391,7 +1391,7 @@ ) ) ) - (when (zero? (logand (-> self draw status) (draw-status drwf01))) + (when (zero? (logand (-> self draw status) (draw-status hidden))) (let ((v1-36 (-> self draw)) (a0-18 (new 'stack-no-clear 'vector)) ) @@ -1473,7 +1473,7 @@ ) ) (initialize-skeleton-by-name obj *lev-string* '()) - (logior! (-> obj draw status) (draw-status drwf06)) + (logior! (-> obj draw status) (draw-status do-not-check-distance)) (if (nonzero? (-> obj draw)) (go med-res-level-idle) ) @@ -1483,7 +1483,7 @@ ) ;; definition for method 20 of type part-spawner -(defmethod dummy-20 part-spawner ((obj part-spawner)) +(defmethod is-visible? part-spawner ((obj part-spawner)) (sphere<-vector+r! (-> obj world-sphere) (-> obj root trans) (-> obj radius)) (sphere-in-view-frustum? (-> obj world-sphere)) ) diff --git a/test/decompiler/reference/engine/game/main_REF.gc b/test/decompiler/reference/engine/game/main_REF.gc index 9b63b6757a..91e5d42913 100644 --- a/test/decompiler/reference/engine/game/main_REF.gc +++ b/test/decompiler/reference/engine/game/main_REF.gc @@ -1029,7 +1029,7 @@ ) ) (countdown (s4-2 (-> (the-as (pointer int32) #x70000000) 4)) - (dummy-18 (-> (+ (* s4-2 4) (the-as int (the-as (pointer process-drawable) #x70000000))) 5)) + (cleanup-for-death (-> (+ (* s4-2 4) (the-as int (the-as (pointer process-drawable) #x70000000))) 5)) ) ) (if *debug-segment* diff --git a/test/decompiler/reference/engine/game/powerups_REF.gc b/test/decompiler/reference/engine/game/powerups_REF.gc index 7d4e00372f..f195340ad8 100644 --- a/test/decompiler/reference/engine/game/powerups_REF.gc +++ b/test/decompiler/reference/engine/game/powerups_REF.gc @@ -701,7 +701,7 @@ ) (when (and (< 0.0 (-> self fact-info-target eco-level)) (zero? (logand (-> self state-flags) 512)) - (zero? (logand (-> self draw status) (draw-status drwf01 drwf02))) + (zero? (logand (-> self draw status) (draw-status hidden no-anim))) (not (movie?)) (rand-vu-percent? (lerp-scale diff --git a/test/decompiler/reference/engine/game/projectiles_REF.gc b/test/decompiler/reference/engine/game/projectiles_REF.gc index a076ab7c46..6aba66363e 100644 --- a/test/decompiler/reference/engine/game/projectiles_REF.gc +++ b/test/decompiler/reference/engine/game/projectiles_REF.gc @@ -86,7 +86,7 @@ (if (logtest? (process-mask enemy) (-> s5-0 mask)) (set! s4-2 (logior s4-2 1)) ) - (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status drwf03))) + (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status was-drawn))) (set! s4-2 (logior s4-2 2)) ) (let ((a0-16 (logand s4-2 (-> gp-0 mask)))) @@ -941,7 +941,7 @@ (send-event (-> v1-0 process 0) 'notify 'die) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -1372,7 +1372,7 @@ :virtual #t :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc index 8db0d28d5c..eca90b7ffb 100644 --- a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc +++ b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc @@ -767,7 +767,7 @@ ;; definition for function process-taskable-clean-up-after-talking (defbehavior process-taskable-clean-up-after-talking process-taskable () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self skel status) (logand -2 (-> self skel status))) (clear-pending-settings-from-process *setting-control* self 'border-mode) (clear-pending-settings-from-process *setting-control* self 'talking) @@ -1486,7 +1486,10 @@ (defmethod draw-npc-shadow process-taskable ((obj process-taskable)) (let ((gp-0 (-> obj draw shadow-ctrl))) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (dummy-15 gp-0 (-> obj draw origin) -4096.0 4096.0 32768.0) (dummy-14 gp-0) ) diff --git a/test/decompiler/reference/engine/gfx/eye_REF.gc b/test/decompiler/reference/engine/gfx/eye_REF.gc index 4ff9a723db..ad9c451a9d 100644 --- a/test/decompiler/reference/engine/gfx/eye_REF.gc +++ b/test/decompiler/reference/engine/gfx/eye_REF.gc @@ -818,7 +818,7 @@ ) (when (and v1-40 (logtest? (-> (the-as process-drawable v1-40) skel status) 256) - (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status drwf03)) + (logtest? (-> (the-as process-drawable v1-40) draw status) (draw-status was-drawn)) ) (when (-> s5-3 shaders) (when (not (paused?)) diff --git a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc index e56647eec3..51c49fd558 100644 --- a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc +++ b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc @@ -150,7 +150,7 @@ (!= (-> self control unknown-surface00 mode) 'swim) (!= (-> self control unknown-surface00 mode) 'dive) (!= (-> self next-state name) 'target-flop) - (zero? (logand (-> self draw status) (draw-status drwf01 drwf02 drwf05))) + (zero? (logand (-> self draw status) (draw-status hidden no-anim skip-bones))) ) (set! (-> self control shadow-pos quad) (-> self control trans quad)) (find-ground-and-draw-shadow diff --git a/test/decompiler/reference/engine/gfx/water/water_REF.gc b/test/decompiler/reference/engine/gfx/water/water_REF.gc index 4a86b17439..b1566cb7d3 100644 --- a/test/decompiler/reference/engine/gfx/water/water_REF.gc +++ b/test/decompiler/reference/engine/gfx/water/water_REF.gc @@ -801,7 +801,7 @@ (set! (-> s4-0 quad) (-> obj bottom 0 quad)) (vector-xz-length (-> obj process root transv)) (set! (-> s4-0 y) (-> obj surface-height)) - (when (and (logtest? (-> obj process draw status) (draw-status drwf03)) + (when (and (logtest? (-> obj process draw status) (draw-status was-drawn)) (zero? (-> obj process draw cur-lod)) (logtest? #x400000 (-> obj flags)) (logtest? #x800000 (-> obj flags)) diff --git a/test/decompiler/reference/engine/target/logic-target_REF.gc b/test/decompiler/reference/engine/target/logic-target_REF.gc index 39df5757ea..8020afd050 100644 --- a/test/decompiler/reference/engine/target/logic-target_REF.gc +++ b/test/decompiler/reference/engine/target/logic-target_REF.gc @@ -1175,8 +1175,8 @@ ) (when (logtest? (-> self state-flags) 32) (if (< (logand (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) 3) 1) - (logior! (-> self draw status) (draw-status drwf01)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) + (logclear! (-> self draw status) (draw-status hidden)) ) (if (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword80)) (-> self control unknown-dword81)) (target-timed-invulnerable-off self) @@ -1452,7 +1452,7 @@ (let ((gp-0 (new 'stack-no-clear 'vector))) (cond ((and (= (-> self next-state name) 'target-clone-anim) - (zero? (logand (-> self draw status) (draw-status drwf01))) + (zero? (logand (-> self draw status) (draw-status hidden))) (begin (vector<-cspace! gp-0 (-> self node-list data 3)) (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) @@ -1487,7 +1487,7 @@ ((logtest? (-> self control root-prim prim-core action) (collide-action ca-13)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad)) ) - ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) + ((logtest? (-> self draw status) (draw-status hidden no-anim)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) ) (else diff --git a/test/decompiler/reference/engine/target/target-death_REF.gc b/test/decompiler/reference/engine/target/target-death_REF.gc index 393e02fbbd..b68f9ffe3a 100644 --- a/test/decompiler/reference/engine/target/target-death_REF.gc +++ b/test/decompiler/reference/engine/target/target-death_REF.gc @@ -989,7 +989,7 @@ ) ) ) - (dummy-9 gp-0 arg1) + (combine! gp-0 arg1) (when (zero? (logand (-> gp-0 mask) 2)) (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) diff --git a/test/decompiler/reference/engine/target/target-handler_REF.gc b/test/decompiler/reference/engine/target/target-handler_REF.gc index fb5cb5d82f..4dc7a37074 100644 --- a/test/decompiler/reference/engine/target/target-handler_REF.gc +++ b/test/decompiler/reference/engine/target/target-handler_REF.gc @@ -262,8 +262,8 @@ ) ((= v1-0 'draw) (if (-> arg3 param 0) - (logclear! (-> self draw status) (draw-status drwf05)) - (logior! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status skip-bones)) + (logior! (-> self draw status) (draw-status skip-bones)) ) (let ((v1-132 (new 'stack-no-clear 'event-message-block))) (set! (-> v1-132 from) arg0) @@ -1100,7 +1100,7 @@ target-standard-event-handler (set! (-> self water drip-mult) 1.0) (set! (-> self neck flex-blend) 1.0) (set! (-> self control unknown-float91) 0.0) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self skel status) (logand -33 (-> self skel status))) (set! (-> self control status) (logand -16385 (-> self control status))) 0 diff --git a/test/decompiler/reference/engine/target/target-util_REF.gc b/test/decompiler/reference/engine/target/target-util_REF.gc index b33e5c9334..e487227bf4 100644 --- a/test/decompiler/reference/engine/target/target-util_REF.gc +++ b/test/decompiler/reference/engine/target/target-util_REF.gc @@ -752,7 +752,7 @@ ;; definition for method 16 of type target ;; INFO: Return type mismatch control-info vs collide-shape. ;; Used lq/sq -(defmethod dummy-16 target ((obj target) (arg0 int) (arg1 (inline-array vector)) (arg2 vector)) +(defmethod apply-alignment target ((obj target) (arg0 int) (arg1 transformq) (arg2 vector)) (let ((s2-0 (new 'stack-no-clear 'vector))) (set! (-> s2-0 quad) (-> arg2 quad)) (set! (-> s2-0 z) (target-align-vel-z-adjust (-> s2-0 z))) @@ -766,7 +766,7 @@ (set-vector! s1-0 0.0 0.0 0.0 1.0) ) (when (logtest? arg0 1) - (set! (-> a1-3 x) (+ (* (-> arg1 0 x) (-> s2-0 x) (-> *display* frames-per-second)) + (set! (-> a1-3 x) (+ (* (-> arg1 trans x) (-> s2-0 x) (-> *display* frames-per-second)) (* (-> s1-0 x) (-> *display* seconds-per-frame)) ) ) @@ -774,14 +774,14 @@ (set! (-> a1-3 z) 0.0) ) ) - (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 0 y) 0.0)))) - (set! (-> a1-3 y) (+ (* (-> arg1 0 y) (-> s2-0 y) (-> *display* frames-per-second)) + (if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 trans y) 0.0)))) + (set! (-> a1-3 y) (+ (* (-> arg1 trans y) (-> s2-0 y) (-> *display* frames-per-second)) (* (-> s1-0 y) (-> *display* seconds-per-frame)) ) ) ) (when (logtest? arg0 4) - (set! (-> a1-3 z) (+ (* (-> arg1 0 z) (-> s2-0 z) (-> *display* frames-per-second)) + (set! (-> a1-3 z) (+ (* (-> arg1 trans z) (-> s2-0 z) (-> *display* frames-per-second)) (* (-> s1-0 z) (-> *display* seconds-per-frame)) ) ) @@ -794,12 +794,9 @@ ) ) (if (logtest? arg0 16) - (quaternion-normalize! (quaternion*! - (-> obj control unknown-quaternion00) - (-> obj control unknown-quaternion00) - (the-as quaternion (-> arg1 1)) - ) - ) + (quaternion-normalize! + (quaternion*! (-> obj control unknown-quaternion00) (-> obj control unknown-quaternion00) (-> arg1 quat)) + ) ) (the-as collide-shape (-> obj control)) ) @@ -1111,7 +1108,7 @@ ;; definition for function target-timed-invulnerable-off ;; INFO: Return type mismatch int vs none. (defun target-timed-invulnerable-off ((arg0 target)) - (logclear! (-> arg0 draw status) (draw-status drwf01)) + (logclear! (-> arg0 draw status) (draw-status hidden)) (set! (-> arg0 state-flags) (logand -33 (-> arg0 state-flags))) (set-collide-kinds (-> arg0 control) 2 (collide-kind) (collide-kind target-attack)) 0 @@ -1121,7 +1118,7 @@ ;; definition for method 9 of type attack-info ;; INFO: Return type mismatch attack-info vs none. ;; Used lq/sq -(defmethod dummy-9 attack-info ((obj attack-info) (arg0 attack-info)) +(defmethod combine! attack-info ((obj attack-info) (arg0 attack-info)) (with-pp (let ((s4-0 (-> arg0 mask))) (set! (-> obj mask) (-> arg0 mask)) diff --git a/test/decompiler/reference/engine/target/target2_REF.gc b/test/decompiler/reference/engine/target/target2_REF.gc index 6ecc6c1e45..8340ab6c21 100644 --- a/test/decompiler/reference/engine/target/target2_REF.gc +++ b/test/decompiler/reference/engine/target/target2_REF.gc @@ -3760,7 +3760,7 @@ (cond ((not (-> self control unknown-spoolanim00)) ) - ((zero? (logand (-> self draw status) (draw-status drwf01))) + ((zero? (logand (-> self draw status) (draw-status hidden))) (move-to-point! (-> self control) (the-as vector a1-2)) (matrix->quaternion (-> self control unknown-quaternion00) (-> gp-0 bone transform)) (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) diff --git a/test/decompiler/reference/levels/beach/beach-obs_REF.gc b/test/decompiler/reference/levels/beach/beach-obs_REF.gc index bccace5546..4837a62e66 100644 --- a/test/decompiler/reference/levels/beach/beach-obs_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-obs_REF.gc @@ -965,7 +965,7 @@ :code (behavior () (clear-collide-with-as (-> self root-override)) - (while (or (logtest? (-> self draw status) (draw-status drwf03)) + (while (or (logtest? (-> self draw status) (draw-status was-drawn)) (and *target* (>= 204800.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) ) diff --git a/test/decompiler/reference/levels/beach/beach-part_REF.gc b/test/decompiler/reference/levels/beach/beach-part_REF.gc index c57aee99ce..643d9df7dd 100644 --- a/test/decompiler/reference/levels/beach/beach-part_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-part_REF.gc @@ -102,7 +102,7 @@ :code (behavior () (while #t - (when (dummy-20 self) + (when (is-visible? self) (let* ((gp-0 (camera-pos)) (f0-0 (vector-vector-distance (-> self root trans) gp-0)) ) diff --git a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc index 22a8e367d1..41f9dd6b35 100644 --- a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc @@ -390,7 +390,7 @@ (suspend) (set! v1-3 (or (not *target*) (process-grab? *target*))) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (ja-channel-set! 1) (let ((gp-0 (-> self skel root-channel 0))) (joint-control-channel-group-eval! diff --git a/test/decompiler/reference/levels/beach/bird-lady_REF.gc b/test/decompiler/reference/levels/beach/bird-lady_REF.gc index 054f35f9fb..c177886547 100644 --- a/test/decompiler/reference/levels/beach/bird-lady_REF.gc +++ b/test/decompiler/reference/levels/beach/bird-lady_REF.gc @@ -53,7 +53,10 @@ (defmethod draw-npc-shadow bird-lady ((obj bird-lady)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -176,7 +179,7 @@ (set! (-> obj sound-flava) (music-flava birdlady)) (set! (-> obj draw light-index) (the-as uint 4)) (if (closed? (-> obj tasks) (game-task beach-flutflut) (task-status need-reminder)) - (dummy-18 obj) + (cleanup-for-death obj) (go (method-of-object obj idle)) ) (none) diff --git a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc index 86c2a8c60e..af2c9871cf 100644 --- a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc @@ -646,7 +646,7 @@ lurkerworm-default-post-behavior (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/beach/mayor_REF.gc b/test/decompiler/reference/levels/beach/mayor_REF.gc index 2f2d2f2cae..d57e3654a7 100644 --- a/test/decompiler/reference/levels/beach/mayor_REF.gc +++ b/test/decompiler/reference/levels/beach/mayor_REF.gc @@ -50,7 +50,10 @@ (defmethod draw-npc-shadow mayor ((obj mayor)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/beach/pelican_REF.gc b/test/decompiler/reference/levels/beach/pelican_REF.gc index c16d447924..44cb978d8d 100644 --- a/test/decompiler/reference/levels/beach/pelican_REF.gc +++ b/test/decompiler/reference/levels/beach/pelican_REF.gc @@ -1067,7 +1067,7 @@ (defstate pelican-wait-at-end (pelican) :code (behavior ((arg0 symbol)) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/beach/sculptor_REF.gc b/test/decompiler/reference/levels/beach/sculptor_REF.gc index d2ad116d38..451e72e5fd 100644 --- a/test/decompiler/reference/levels/beach/sculptor_REF.gc +++ b/test/decompiler/reference/levels/beach/sculptor_REF.gc @@ -61,7 +61,10 @@ (defmethod draw-npc-shadow sculptor ((obj sculptor)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc index e085ea8cde..2ca653b2c9 100644 --- a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc @@ -114,8 +114,8 @@ (vector-normalize! gp-0 1.0) (vector-normalize! s5-0 1.0) (if (>= (vector-dot gp-0 s5-0) (-> self cull-dot)) - (logior! (-> self draw status) (draw-status drwf01)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) + (logclear! (-> self draw status) (draw-status hidden)) ) (suspend) ) @@ -192,7 +192,7 @@ (the-as (function none :behavior citb-arm) rider-trans) :post (behavior () - (if (logtest? (-> self draw status) (draw-status drwf01)) + (if (logtest? (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-override)) (restore-collide-with-as (-> self root-override)) ) @@ -1044,7 +1044,7 @@ ) ) ((= arg2 'die) - (dummy-18 self) + (cleanup-for-death self) (the-as symbol (deactivate self)) ) ((or (= arg2 'touch) (= arg2 'attack)) @@ -1265,7 +1265,7 @@ (defstate citb-robotboss-die (citb-robotboss) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc index 5afe879239..25e7b8f84d 100644 --- a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc @@ -47,7 +47,7 @@ ;; definition for function citb-sagecage-draw-bars ;; INFO: Return type mismatch int vs none. (defbehavior citb-sagecage-draw-bars citb-sagecage () - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((gp-0 (-> self node-list data 3 bone transform)) (s5-0 (new 'stack-no-clear 'vector)) ) @@ -602,7 +602,10 @@ (defmethod draw-npc-shadow red-sagecage ((obj red-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -733,7 +736,10 @@ (defmethod draw-npc-shadow blue-sagecage ((obj blue-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -869,7 +875,10 @@ (defmethod draw-npc-shadow yellow-sagecage ((obj yellow-sagecage)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc b/test/decompiler/reference/levels/citadel/citb-drop-plat_REF.gc similarity index 99% rename from test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc rename to test/decompiler/reference/levels/citadel/citb-drop-plat_REF.gc index 8a53010de8..3fa37cd5a6 100644 --- a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc +++ b/test/decompiler/reference/levels/citadel/citb-drop-plat_REF.gc @@ -155,12 +155,12 @@ (set! (-> self root-override trans y) (+ -204800.0 (-> (the-as process-drawable (-> self parent 0)) root trans y)) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (ja-post) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self delay)) - (let ((v1-14 (logclear (-> self draw status) (draw-status drwf01))) + (let ((v1-14 (logclear (-> self draw status) (draw-status hidden))) (a0-5 (-> self draw)) ) (set! (-> a0-5 status) v1-14) @@ -280,7 +280,7 @@ (defstate drop-plat-die (drop-plat) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/citadel/citb-plat_REF.gc b/test/decompiler/reference/levels/citadel/citb-plat_REF.gc index 69424c59e9..b2bae74bb3 100644 --- a/test/decompiler/reference/levels/citadel/citb-plat_REF.gc +++ b/test/decompiler/reference/levels/citadel/citb-plat_REF.gc @@ -243,7 +243,7 @@ :virtual #t :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options fop3)) + (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options wrap-phase)) (get-current-phase (-> self sync)) (get-current-phase-with-mirror (-> self sync)) ) @@ -372,11 +372,11 @@ (the-as (function none :behavior citb-stair-plat) #f) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (not (-> self rise)) (suspend) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0) (set! (-> self state-time) (-> *display* base-frame-counter)) (while (< (- (-> *display* base-frame-counter) (-> self state-time)) (-> self delay)) @@ -1047,7 +1047,7 @@ ;; definition for method 26 of type citb-stopbox ;; INFO: Return type mismatch int vs none. (defmethod dummy-26 citb-stopbox ((obj citb-stopbox)) - (logior! (-> obj fact options) (fact-options fop3)) + (logior! (-> obj fact options) (fact-options wrap-phase)) (logclear! (-> obj mask) (process-mask actor-pause)) 0 (none) @@ -1365,7 +1365,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-override)) (while #t (suspend) @@ -1380,7 +1380,7 @@ (the-as (function none :behavior citb-exit-plat) rider-trans) :code (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self root-override)) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t diff --git a/test/decompiler/reference/levels/common/babak_REF.gc b/test/decompiler/reference/levels/common/babak_REF.gc index 8485afa64b..c50a3e2f3b 100644 --- a/test/decompiler/reference/levels/common/babak_REF.gc +++ b/test/decompiler/reference/levels/common/babak_REF.gc @@ -464,7 +464,7 @@ (defmethod TODO-RENAME-59 babak ((obj babak)) (cond ((and (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) - (logtest? (-> obj enemy-info options) (fact-options fop1)) + (logtest? (-> obj enemy-info options) (fact-options has-power-cell)) ) (go (method-of-object obj nav-enemy-fuel-cell)) ) diff --git a/test/decompiler/reference/levels/common/basebutton_REF.gc b/test/decompiler/reference/levels/common/basebutton_REF.gc index f861ca53af..b118648690 100644 --- a/test/decompiler/reference/levels/common/basebutton_REF.gc +++ b/test/decompiler/reference/levels/common/basebutton_REF.gc @@ -590,7 +590,7 @@ ) (case (-> self level) (('citadel 'lavatube) - (while (and *target* (zero? (logand (-> *target* draw status) (draw-status drwf01)))) + (while (and *target* (zero? (logand (-> *target* draw status) (draw-status hidden)))) (suspend) ) ) @@ -643,7 +643,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) diff --git a/test/decompiler/reference/levels/common/baseplat_REF.gc b/test/decompiler/reference/levels/common/baseplat_REF.gc index 4c3200f701..7204edff80 100644 --- a/test/decompiler/reference/levels/common/baseplat_REF.gc +++ b/test/decompiler/reference/levels/common/baseplat_REF.gc @@ -308,7 +308,7 @@ eco-door-event-handler (set! (-> v1-6 num-func) num-func-identity) (set! (-> v1-6 frame-num) (the float (+ (-> v1-6 frame-group data 0 length) -1))) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (suspend) (update-transforms! (-> self root-override)) (ja-post) @@ -341,7 +341,7 @@ eco-door-event-handler :code (behavior () (restore-collide-with-as (-> self root-override)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (let ((gp-0 (new 'stack 'overlaps-others-params))) (set! (-> gp-0 options) (the-as uint 1)) (set! (-> gp-0 tlist) #f) diff --git a/test/decompiler/reference/levels/common/blocking-plane_REF.gc b/test/decompiler/reference/levels/common/blocking-plane_REF.gc index 09e0300260..7b4e75a6fe 100644 --- a/test/decompiler/reference/levels/common/blocking-plane_REF.gc +++ b/test/decompiler/reference/levels/common/blocking-plane_REF.gc @@ -89,7 +89,7 @@ ) ) (initialize-skeleton self *ef-plane-sg* '()) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (go blocking-plane-idle) (none) ) diff --git a/test/decompiler/reference/levels/common/nav-enemy_REF.gc b/test/decompiler/reference/levels/common/nav-enemy_REF.gc index 99a5a7c31d..b0befbb5aa 100644 --- a/test/decompiler/reference/levels/common/nav-enemy_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy_REF.gc @@ -255,7 +255,7 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) ) (none) @@ -808,11 +808,11 @@ nav-enemy-default-event-handler (and (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj collide-info pause-adjust-distance)) (vector-vector-distance (-> obj collide-info trans) (camera-pos)) ) - (or (logtest? (-> obj draw status) (draw-status drwf03)) (!= (-> obj next-state name) 'nav-enemy-idle)) + (or (logtest? (-> obj draw status) (draw-status was-drawn)) (!= (-> obj next-state name) 'nav-enemy-idle)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -850,7 +850,7 @@ nav-enemy-default-event-handler ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -915,7 +915,7 @@ nav-enemy-default-event-handler (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status drwf03))) + (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status was-drawn))) (set! (-> self free-time) (-> *display* base-frame-counter)) ) (if (or (or (not *target*) (< (-> self enemy-info idle-distance) @@ -1651,13 +1651,13 @@ nav-enemy-default-event-handler 600 ) (send-event self 'death-end) - (if (logtest? (-> self enemy-info options) (fact-options fop1)) + (if (logtest? (-> self enemy-info options) (fact-options has-power-cell)) (go-virtual nav-enemy-fuel-cell) ) (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1696,7 +1696,7 @@ nav-enemy-default-event-handler (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/common/plat_REF.gc b/test/decompiler/reference/levels/common/plat_REF.gc index e5e6fbdab4..daf31d0919 100644 --- a/test/decompiler/reference/levels/common/plat_REF.gc +++ b/test/decompiler/reference/levels/common/plat_REF.gc @@ -268,7 +268,7 @@ ) :trans (behavior () - (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options fop3)) + (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options wrap-phase)) (get-current-phase (-> self sync)) (get-current-phase-with-mirror (-> self sync)) ) @@ -321,7 +321,7 @@ ) ) ((> (-> obj sync period) 0) - (set! (-> obj path-pos) (if (logtest? (-> obj fact options) (fact-options fop3)) + (set! (-> obj path-pos) (if (logtest? (-> obj fact options) (fact-options wrap-phase)) (get-current-phase (-> obj sync)) (get-current-phase-with-mirror (-> obj sync)) ) diff --git a/test/decompiler/reference/levels/common/ropebridge_REF.gc b/test/decompiler/reference/levels/common/ropebridge_REF.gc index e94eafd5ba..b7c1b9265a 100644 --- a/test/decompiler/reference/levels/common/ropebridge_REF.gc +++ b/test/decompiler/reference/levels/common/ropebridge_REF.gc @@ -1070,7 +1070,7 @@ (< (- (-> *display* base-frame-counter) (-> obj agitated-time-stamp)) (seconds 5)) (or (>= (-> obj sleep-dist) (vector-vector-distance (-> obj root-override trans) (math-camera-pos))) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/test/decompiler/reference/levels/common/sharkey_REF.gc b/test/decompiler/reference/levels/common/sharkey_REF.gc index 5b868073d9..58ac7002e9 100644 --- a/test/decompiler/reference/levels/common/sharkey_REF.gc +++ b/test/decompiler/reference/levels/common/sharkey_REF.gc @@ -106,7 +106,7 @@ nav-enemy-default-event-handler (vector-vector-distance (-> obj collide-info trans) (math-camera-pos)) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -278,7 +278,7 @@ nav-enemy-default-event-handler ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -301,7 +301,7 @@ nav-enemy-default-event-handler ) (let ((a0-4 (dummy-16 (-> self nav) (-> *target* control trans)))) (when (or (and a0-4 (logtest? (-> a0-4 pat) 2)) - (and (logtest? (-> self draw status) (draw-status drwf01)) + (and (logtest? (-> self draw status) (draw-status hidden)) (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) ) ) @@ -344,7 +344,7 @@ nav-enemy-default-event-handler (ja-post) (suspend) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (anim-loop) (none) ) @@ -549,7 +549,7 @@ nav-enemy-default-event-handler ) ) (sharkey-reset-position) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (go-virtual nav-enemy-idle) (none) ) diff --git a/test/decompiler/reference/levels/common/water-anim_REF.gc b/test/decompiler/reference/levels/common/water-anim_REF.gc index 06bdb074d2..afcc0eb497 100644 --- a/test/decompiler/reference/levels/common/water-anim_REF.gc +++ b/test/decompiler/reference/levels/common/water-anim_REF.gc @@ -944,8 +944,8 @@ ) ) (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y))) - (logior! (-> self draw status) (draw-status drwf01)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) + (logclear! (-> self draw status) (draw-status hidden)) ) (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound))) (update! (-> self sound)) diff --git a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc index 20a1a69133..76c068bd70 100644 --- a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc +++ b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc @@ -449,13 +449,13 @@ (defstate green-eco-lurker-wait-to-appear (green-eco-lurker) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self collide-info)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self collide-info)) (none) ) @@ -479,33 +479,34 @@ ;; definition for method 53 of type green-eco-lurker ;; INFO: Return type mismatch int vs symbol. (defmethod dummy-53 green-eco-lurker ((obj green-eco-lurker)) - (the-as - symbol - (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) - (let ((f0-0 (-> obj appear-dest y)) - (v1-7 (-> obj draw shadow-ctrl)) - ) - (let ((a0-1 v1-7)) - (set! (-> a0-1 settings flags) (logand -33 (-> a0-1 settings flags))) - ) - 0 - (let ((a0-3 v1-7)) - (set! (-> a0-3 settings bot-plane w) (- (+ -6144.0 f0-0))) - ) - 0 - (set! (-> v1-7 settings top-plane w) (- (+ 6144.0 f0-0))) - ) - 0 - ) - (else - (let ((v1-9 (-> obj draw shadow-ctrl))) - (logior! (-> v1-9 settings flags) 32) + (the-as symbol (cond + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) + (let ((f0-0 (-> obj appear-dest y)) + (v1-7 (-> obj draw shadow-ctrl)) + ) + (let ((a0-1 v1-7)) + (set! (-> a0-1 settings flags) (logand -33 (-> a0-1 settings flags))) + ) + 0 + (let ((a0-3 v1-7)) + (set! (-> a0-3 settings bot-plane w) (- (+ -6144.0 f0-0))) + ) + 0 + (set! (-> v1-7 settings top-plane w) (- (+ 6144.0 f0-0))) + ) + 0 + ) + (else + (let ((v1-9 (-> obj draw shadow-ctrl))) + (logior! (-> v1-9 settings flags) 32) + ) + 0 + ) + ) ) - 0 - ) - ) - ) ) ;; failed to figure out what this is: diff --git a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc index c51503b2a1..b818a14689 100644 --- a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc +++ b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc @@ -612,7 +612,7 @@ (behavior () (send-event (ppointer->process (-> self parent)) 'untrigger (-> self angle-bit)) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.1)) (suspend) @@ -883,7 +883,7 @@ (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-loop!) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc index 2a76a248de..001191f87c 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc @@ -460,12 +460,12 @@ (if (nonzero? (-> self sound)) (stop! (-> self sound)) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (ja-post) (while (not (task-closed? (game-task finalboss-movies) (task-status need-reminder-a))) (suspend) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (let ((v1-12 (-> self skel root-channel 0))) (set! (-> v1-12 num-func) num-func-identity) (set! (-> v1-12 frame-num) 0.0) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc index 054eb19cd6..50f353dd5b 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc @@ -326,7 +326,7 @@ (-> s5-1 ppointer) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (cond ((or arg0 (and *target* (< (-> (target-pos 0) y) (+ 40960.0 (-> self entity extra trans y))))) (if *target* @@ -784,7 +784,7 @@ (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) arg3) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 664) self)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (go greenshot-idle) (none) ) @@ -894,7 +894,7 @@ (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (sound-play-by-name (static-sound-name "red-explode") (new-sound-id) 1024 0 0 1 #t) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (quaternion-identity! (-> self root-override quat)) (set! (-> self ring radius-secondary) 3072.0) (set! (-> self ring origin quad) (-> self root-override trans quad)) @@ -1085,7 +1085,7 @@ (set! (-> self part) (create-launch-control (-> *part-group-id-table* 647) self)) (set! (-> self shot-particle) (create-launch-control (-> *part-group-id-table* 665) self)) (set! (-> self test-particle) (create-launch-control (-> *part-group-id-table* 679) self)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self sound) (new 'process 'ambient-sound @@ -1202,7 +1202,7 @@ ) (set! (-> self root-override trans quad) (-> arg0 quad)) (initialize-skeleton self *redring-sg* '()) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (arcing-shot-setup arg0 arg1 arg2) (set! (-> self flight-time) arg3) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 652) self)) diff --git a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc index e947fdc507..4de9de8d5e 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc @@ -536,7 +536,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (else @@ -892,7 +892,7 @@ (defstate robotboss-white-eco-movie (robotboss) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self children-spawned) 0) (set! (-> self state-time) (-> *display* base-frame-counter)) (ja-post) @@ -900,7 +900,7 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/test/decompiler/reference/levels/finalboss/sage-finalboss-FIN_REF.gc b/test/decompiler/reference/levels/finalboss/sage-finalboss_REF.gc similarity index 99% rename from test/decompiler/reference/levels/finalboss/sage-finalboss-FIN_REF.gc rename to test/decompiler/reference/levels/finalboss/sage-finalboss_REF.gc index 3b7beeeee4..c9a7f16286 100644 --- a/test/decompiler/reference/levels/finalboss/sage-finalboss-FIN_REF.gc +++ b/test/decompiler/reference/levels/finalboss/sage-finalboss_REF.gc @@ -1088,7 +1088,7 @@ (set-setting! *setting-control* self 'allow-progress #f 0.0 0) (set-setting! *setting-control* self 'music 'ogreboss 0.0 0) (set! (-> self state-time) (-> *display* game-frame-counter)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let ((gp-0 (-> self mask))) (load-state-want-display-level 'finalboss 'special) (logclear! (-> self mask) (process-mask pause progress)) diff --git a/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc index 14be172213..3c9679af31 100644 --- a/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc +++ b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc @@ -125,7 +125,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -756,7 +756,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc index 4931fd5905..59eaa55ad6 100644 --- a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc +++ b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc @@ -224,7 +224,7 @@ (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) (go-virtual wait-for-return) ) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) (level-hint-spawn (game-text-id flutflut-reminder) diff --git a/test/decompiler/reference/levels/flut_common/target-flut_REF.gc b/test/decompiler/reference/levels/flut_common/target-flut_REF.gc index 4774dba64c..8257d2c2eb 100644 --- a/test/decompiler/reference/levels/flut_common/target-flut_REF.gc +++ b/test/decompiler/reference/levels/flut_common/target-flut_REF.gc @@ -2204,7 +2204,7 @@ ) ) ) - (dummy-9 gp-0 arg1) + (combine! gp-0 arg1) (when (zero? (logand (-> gp-0 mask) 2)) (vector-z-quaternion! (-> gp-0 vector) (-> self control unknown-quaternion00)) (vector-xz-normalize! (-> gp-0 vector) (- (fabs (-> gp-0 shove-back)))) diff --git a/test/decompiler/reference/levels/jungle/darkvine_REF.gc b/test/decompiler/reference/levels/jungle/darkvine_REF.gc index 635dbb3722..f50c3ffbe6 100644 --- a/test/decompiler/reference/levels/jungle/darkvine_REF.gc +++ b/test/decompiler/reference/levels/jungle/darkvine_REF.gc @@ -42,13 +42,13 @@ (defmethod run-logic? darkvine ((obj darkvine)) (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) + (logtest? (-> obj draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc b/test/decompiler/reference/levels/jungle/fisher_REF.gc similarity index 99% rename from test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc rename to test/decompiler/reference/levels/jungle/fisher_REF.gc index d9d7b5ca42..08ebed95ae 100644 --- a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc +++ b/test/decompiler/reference/levels/jungle/fisher_REF.gc @@ -929,7 +929,10 @@ (defmethod draw-npc-shadow fisher ((obj fisher)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc b/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc index 044238d051..9ba3e0bf18 100644 --- a/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc @@ -1152,7 +1152,7 @@ (defbehavior periscope-draw-beam-impact periscope () (when (periscope-has-power-input?) (update! (-> self sound)) - (if (logtest? (-> self draw status) (draw-status drwf03)) + (if (logtest? (-> self draw status) (draw-status was-drawn)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) @@ -1398,7 +1398,7 @@ :exit (behavior () (restore-collide-with-as (-> self root-override)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -1415,7 +1415,7 @@ (ja-post) (suspend) (update-transforms! (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -1686,7 +1686,7 @@ (defstate periscope-player-control (periscope) :exit (behavior () - (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) + (logclear! (-> self reflector 0 draw status) (draw-status hidden)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -1803,7 +1803,7 @@ (set! (-> gp-0 vector 3 quad) a2-2) ) (send-event *camera* 'change-state cam-periscope 0) - (logior! (-> self reflector 0 draw status) (draw-status drwf01)) + (logior! (-> self reflector 0 draw status) (draw-status hidden)) (suspend) (while #t (if (not (-> self aligned?)) @@ -1831,7 +1831,7 @@ (periscope-crosshair) (suspend) ) - (logclear! (-> self reflector 0 draw status) (draw-status drwf01)) + (logclear! (-> self reflector 0 draw status) (draw-status hidden)) (periscope-find-reflection-angles) (set! (-> self turn) (-> self target-turn)) (set! (-> self tilt) (-> self target-tilt)) @@ -2175,7 +2175,7 @@ (while #t (draw-power-beam gp-0 (-> self beam-end)) (update! (-> self sound)) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (sp-launch-particles-var *sp-particle-system-2d* (-> *part-id-table* 825) diff --git a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc index b595e85bf7..46dee0f2b2 100644 --- a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc @@ -74,7 +74,7 @@ (joint-control-channel-group! a0-0 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) ) (until (ja-done? 0) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (cond ((> (-> self draw cur-lod) 0) (ja-post) @@ -686,7 +686,7 @@ (ja-post) (while #t (suspend) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((a0-1 (-> self skel root-channel 0))) (set! (-> a0-1 param 0) (-> self speed)) (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-loop!) @@ -1329,7 +1329,7 @@ :code (behavior ((arg0 symbol)) (set! (-> self draw force-lod) 1) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (when arg0 (let ((v1-6 (-> self skel root-channel 0))) (set! (-> v1-6 num-func) num-func-identity) @@ -1389,7 +1389,7 @@ :code (behavior ((arg0 symbol)) (set! (-> self draw force-lod) 0) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (process-entity-status! self (entity-perm-status complete) #t) (when arg0 (let ((v1-6 (-> self skel root-channel 0))) @@ -1410,7 +1410,7 @@ ) (suspend) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) diff --git a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc index 77d263fe2a..a3183c8a8d 100644 --- a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc +++ b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc @@ -386,7 +386,7 @@ junglesnake-default-event-handler (set! (-> self track-player-tilt) #f) (set! (-> self des-ry) (-> self ry)) (set! (-> self des-tilt) (-> self tilt)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -417,7 +417,7 @@ junglesnake-default-event-handler junglesnake-default-event-handler :enter (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self track-player-ry) #f) (set! (-> self track-player-tilt) #f) (set! (-> self skel postbind-function) junglesnake-joint-callback) @@ -747,7 +747,7 @@ junglesnake-default-event-handler (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc b/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc index 6ff897e6a8..f020e2f82f 100644 --- a/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc +++ b/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc @@ -1064,7 +1064,7 @@ (-> gp-1 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) diff --git a/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc b/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc index 1b0b63cd0e..21308075f6 100644 --- a/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc +++ b/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc @@ -681,8 +681,8 @@ ) ) (if (< (vector-vector-xz-distance-squared (-> self root-override trans) (camera-pos)) 1073741800.0) - (logior! (-> self draw status) (draw-status drwf05)) - (set! (-> self draw status) (the-as draw-status (logclear (-> self draw status) (draw-status drwf05)))) + (logior! (-> self draw status) (draw-status skip-bones)) + (set! (-> self draw status) (the-as draw-status (logclear (-> self draw status) (draw-status skip-bones)))) ) (none) ) @@ -713,7 +713,7 @@ (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -1005,7 +1005,7 @@ (-> obj root-override trans) ) ) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (set! (-> obj speed) (/ 300.0 (res-lump-float (-> obj entity) 'speed :default 61440.0))) (set! sv-16 (new 'static 'res-tag)) (let ((s5-1 (res-lump-data arg0 'delay pointer :tag-ptr (& sv-16)))) @@ -1447,7 +1447,7 @@ (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -1701,7 +1701,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc index 844cf71975..c4a5d034a1 100644 --- a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc @@ -334,7 +334,7 @@ baby-spider-default-event-handler ;; definition for method 53 of type baby-spider (defmethod dummy-53 baby-spider ((obj baby-spider)) (cond - ((logtest? (-> obj draw status) (draw-status drwf03)) + ((logtest? (-> obj draw status) (draw-status was-drawn)) (set! (-> obj last-visible-time) (-> *display* base-frame-counter)) (return #f) ) @@ -403,7 +403,7 @@ baby-spider-default-event-handler ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -861,7 +861,7 @@ baby-spider-default-event-handler baby-spider-default-event-handler :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (let ((v1-2 (-> self event-death))) (if v1-2 (send-event (ppointer->process (-> self parent)) v1-2) diff --git a/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc b/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc index 5faead1ab9..f83b223ed9 100644 --- a/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc +++ b/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc @@ -565,7 +565,7 @@ (suspend) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (dummy-20 self) (if (-> self underwater?) (sound-play-by-name (static-sound-name "water-explosion") (new-sound-id) 1024 0 0 1 #t) @@ -601,7 +601,7 @@ (go dark-crystal-spawn-fuel-cell) ) ) - (dummy-18 self) + (cleanup-for-death self) (until (not (-> self child)) (suspend) ) @@ -629,7 +629,7 @@ ) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (if (not (task-complete? *game-info* (-> self entity extra perm task))) (birth-pickup-at-point (-> self root-override trans) @@ -645,7 +645,7 @@ (suspend) ) (aybabtu 2) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc b/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc index c8417526b0..6b923248c4 100644 --- a/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc +++ b/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc @@ -1235,7 +1235,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/maincave/gnawer_REF.gc b/test/decompiler/reference/levels/maincave/gnawer_REF.gc index ae07eae9a5..966365d9bb 100644 --- a/test/decompiler/reference/levels/maincave/gnawer_REF.gc +++ b/test/decompiler/reference/levels/maincave/gnawer_REF.gc @@ -537,7 +537,7 @@ (defmethod dummy-23 gnawer ((obj gnawer)) (when (not (-> obj hidden?)) (set! (-> obj hidden?) #t) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (logclear! (-> obj mask) (process-mask attackable)) (set! (-> obj skel postbind-function) #f) (set! (-> obj root-override trans quad) (-> obj post-trans quad)) @@ -557,7 +557,7 @@ (set! (-> obj hidden?) #f) (restore-collide-with-as (-> obj root-override)) (set! (-> obj skel postbind-function) gnawer-joint-callback) - (logclear! (-> obj draw status) (draw-status drwf01)) + (logclear! (-> obj draw status) (draw-status hidden)) ) (none) ) @@ -1502,7 +1502,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (process-entity-status! self (entity-perm-status complete) #t) (dummy-27 self) (let ((v1-10 (-> self entity extra perm))) @@ -1547,7 +1547,7 @@ (until (not (-> self child)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -1618,7 +1618,7 @@ ) (process-entity-status! self (entity-perm-status bit-3) #f) (logior! (-> self mask) (process-mask actor-pause)) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -1643,7 +1643,7 @@ (set! (-> self skel postbind-function) #f) (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (case (get-reminder (get-task-control (game-task cave-gnawers)) 3) (((-> self gnawer-id)) (when (not (task-complete? *game-info* (-> self entity extra perm task))) @@ -1680,7 +1680,7 @@ (until (not (-> self child)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc index 7b3dfd2ac1..3ed33f301f 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc @@ -188,7 +188,10 @@ ;; Used lq/sq (defmethod draw-egg-shadow mother-spider-egg ((obj mother-spider-egg) (arg0 vector) (arg1 symbol)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) (a2-1 (new 'stack-no-clear 'vector)) @@ -407,7 +410,7 @@ (defstate mother-spider-egg-hatch (mother-spider-egg) :trans (behavior () - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) (let ((a1-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> self fall-dest quad)) (compute-and-draw-shadow @@ -597,7 +600,7 @@ :code (behavior () (send-event (ppointer->process (-> self parent-override)) 'untrigger) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let ((v1-8 (-> self draw shadow-ctrl))) (logior! (-> v1-8 settings flags) 32) ) diff --git a/test/decompiler/reference/levels/maincave/mother-spider_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider_REF.gc index 350e0a0ef7..b5e270d5ae 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider_REF.gc @@ -199,7 +199,7 @@ (defstate wait-for-children (mother-spider) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) @@ -387,7 +387,7 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status drwf01))))) + (let ((v0-0 (the-as object (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) @@ -453,7 +453,10 @@ ;; Used lq/sq (defmethod TODO-RENAME-24 mother-spider ((obj mother-spider)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -882,7 +885,7 @@ (clear-collide-with-as (-> self root-override)) (shut-down! (-> self neck)) (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :exit @@ -890,7 +893,7 @@ (restore-collide-with-as (-> self root-override)) (set! (-> self skel postbind-function) mother-spider-full-joint-callback) (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -1920,11 +1923,11 @@ (logclear! (-> self mask) (process-mask actor-pause)) (clear-collide-with-as (-> self root-override)) (set! (-> self skel postbind-function) #f) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -2014,7 +2017,7 @@ (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (< (vector-vector-xz-distance (-> obj root-override trans) (math-camera-pos)) (-> obj deactivate-xz-dist)) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) diff --git a/test/decompiler/reference/levels/misty/babak-with-cannon_REF.gc b/test/decompiler/reference/levels/misty/babak-with-cannon_REF.gc index 954b5730e9..6025751ac4 100644 --- a/test/decompiler/reference/levels/misty/babak-with-cannon_REF.gc +++ b/test/decompiler/reference/levels/misty/babak-with-cannon_REF.gc @@ -490,7 +490,7 @@ nav-enemy-default-event-handler (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -519,7 +519,7 @@ nav-enemy-default-event-handler (set! (-> obj cannon-ent) (entity-actor-lookup (-> obj entity) 'alt-actor 0)) (logclear! (-> obj mask) (process-mask actor-pause)) (if (or (not (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))) - (zero? (logand (-> obj enemy-info options) (fact-options fop1))) + (zero? (logand (-> obj enemy-info options) (fact-options has-power-cell))) ) (go (method-of-object obj nav-enemy-idle)) ) diff --git a/test/decompiler/reference/levels/misty/balloonlurker_REF.gc b/test/decompiler/reference/levels/misty/balloonlurker_REF.gc index 93eb26048d..177e5e5d87 100644 --- a/test/decompiler/reference/levels/misty/balloonlurker_REF.gc +++ b/test/decompiler/reference/levels/misty/balloonlurker_REF.gc @@ -798,16 +798,16 @@ (balloonlurker-play-sounds) (when (nonzero? (-> self draw)) (cond - ((or (logtest? (-> self draw status) (draw-status drwf04)) - (logtest? (-> self draw status) (draw-status drwf03)) + ((or (logtest? (-> self draw status) (draw-status no-skeleton-update)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) - (logclear! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status skip-bones)) (update-transforms! (-> self root-overlay)) (ja-post) ) (else (set! (-> self draw origin quad) (-> self root-overlay trans quad)) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) ) ) ) @@ -966,7 +966,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (while (-> self child) (suspend) ) @@ -1088,7 +1088,7 @@ (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc index c72e30939b..c27f9d330f 100644 --- a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc @@ -495,7 +495,7 @@ :code (behavior () (sound-stop (-> self sound-id)) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/misty/misty-obs_REF.gc b/test/decompiler/reference/levels/misty/misty-obs_REF.gc index 4cc98ac30a..cd81af3d69 100644 --- a/test/decompiler/reference/levels/misty/misty-obs_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-obs_REF.gc @@ -1724,7 +1724,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -2370,7 +2370,7 @@ (defstate boat-fuelcell-die (boat-fuelcell) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/misty/mistycannon_REF.gc b/test/decompiler/reference/levels/misty/mistycannon_REF.gc index 0550e7dc7b..ba66e29619 100644 --- a/test/decompiler/reference/levels/misty/mistycannon_REF.gc +++ b/test/decompiler/reference/levels/misty/mistycannon_REF.gc @@ -902,7 +902,7 @@ ) (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) (spawn-part self) - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) (if (logtest? (-> self root-override status) 1) (draw-shadow (-> self root-override shadow-pos) diff --git a/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc b/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc index 0c84ad1c37..4333127f5f 100644 --- a/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc +++ b/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc @@ -402,7 +402,7 @@ ) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -447,7 +447,7 @@ (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) @@ -589,8 +589,8 @@ ;; ERROR: function has no type analysis. Cannot decompile. ;; definition for function intersects-nav-mesh? -(defun intersects-nav-mesh? ((arg0 quicksandlurker) (arg1 int) (arg2 (inline-array vector)) (arg3 vector)) - (if (dummy-16 arg0 arg1 arg2 arg3) +(defun intersects-nav-mesh? ((arg0 nav-control) (arg1 vector)) + (if (dummy-16 arg0 arg1) #t ) ) @@ -680,12 +680,12 @@ (the-as (function process int symbol event-message-block object :behavior quicksandlurker) #f) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -873,7 +873,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (+! s4-0 1) (when (>= s4-0 s5-0) - (if (logtest? (-> self draw status) (draw-status drwf03)) + (if (logtest? (-> self draw status) (draw-status was-drawn)) (go quicksandlurker-attack) ) ) @@ -1182,7 +1182,7 @@ (joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc index 7a23c5a000..983b2834ca 100644 --- a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc +++ b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc @@ -85,7 +85,7 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) (set! (-> self draw status) v0-0) (the-as uint v0-0) ) @@ -209,7 +209,7 @@ ) (send-event-function *target* a1-15) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (while #t (suspend) @@ -255,7 +255,7 @@ (-> gp-0 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (none) @@ -356,7 +356,7 @@ (defstate plunger-lurker-die (plunger-lurker) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (suspend) 0 @@ -479,7 +479,7 @@ (s4-0 #f) ) (when (-> obj draw shadow) - (when (or (logtest? (-> obj draw status) (draw-status drwf03)) + (when (or (logtest? (-> obj draw status) (draw-status was-drawn)) (< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0) ) (let ((s3-1 (new 'stack-no-clear 'collide-tri-result)) @@ -570,7 +570,7 @@ (defstate flying-lurker-die (flying-lurker) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -581,7 +581,7 @@ :code (behavior () (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -771,7 +771,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ((= v1-0 'sleep) @@ -831,7 +831,7 @@ :enter (behavior () (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans @@ -1060,7 +1060,7 @@ (send-event (handle->process gp-1) 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status drwf05)))) + (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) (set! (-> self draw status) v0-0) (the-as uint v0-0) ) @@ -1204,7 +1204,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ((= v1-0 'sleep) @@ -1346,7 +1346,7 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc index 396d09d8cf..d971ac5507 100644 --- a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc +++ b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc @@ -405,7 +405,7 @@ ) ) (suspend) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -615,7 +615,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -659,7 +659,7 @@ ) :code (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -1890,7 +1890,7 @@ (joint-control-channel-group-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/test/decompiler/reference/levels/ogre/ogreboss_REF.gc b/test/decompiler/reference/levels/ogre/ogreboss_REF.gc index f77d130c55..fb247ba3d4 100644 --- a/test/decompiler/reference/levels/ogre/ogreboss_REF.gc +++ b/test/decompiler/reference/levels/ogre/ogreboss_REF.gc @@ -182,7 +182,7 @@ (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -407,7 +407,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -840,7 +840,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -970,7 +970,7 @@ (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1167,7 +1167,7 @@ ) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1820,7 +1820,7 @@ ) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self submerged) #t) (let ((s5-1 (-> *display* base-frame-counter))) (until (>= (- (-> *display* base-frame-counter) s5-1) arg0) @@ -1837,7 +1837,7 @@ (defbehavior ogreboss-emerge ogreboss ((arg0 float)) (when (-> self submerged) (set! (-> self submerged) #f) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (cond ((-> self at-near-spot) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) @@ -2884,7 +2884,7 @@ (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/racer-states_REF.gc similarity index 99% rename from test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc rename to test/decompiler/reference/levels/racer_common/racer-states_REF.gc index aba5398be7..ca1a6064ac 100644 --- a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc +++ b/test/decompiler/reference/levels/racer_common/racer-states_REF.gc @@ -963,7 +963,7 @@ (set! (-> v1-0 angle) #f) ) (set! (-> self attack-info trans quad) (the-as uint128 0)) - (dummy-9 (-> self attack-info) arg1) + (combine! (-> self attack-info) arg1) (case (-> self attack-info mode) (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) (pickup-collectable! (-> self fact-info-target) (pickup-type eco-green) -1000.0 (the-as handle #f)) diff --git a/test/decompiler/reference/levels/racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/target-racer-h_REF.gc similarity index 100% rename from test/decompiler/reference/levels/racer_common/target-racer-h-FIC-LAV-MIS-OGR-ROL_REF.gc rename to test/decompiler/reference/levels/racer_common/target-racer-h_REF.gc diff --git a/test/decompiler/reference/levels/racer_common/target-racer-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/target-racer_REF.gc similarity index 99% rename from test/decompiler/reference/levels/racer_common/target-racer-FIC-LAV-MIS-OGR-ROL_REF.gc rename to test/decompiler/reference/levels/racer_common/target-racer_REF.gc index 4ba5f33440..e342c9b1c1 100644 --- a/test/decompiler/reference/levels/racer_common/target-racer-FIC-LAV-MIS-OGR-ROL_REF.gc +++ b/test/decompiler/reference/levels/racer_common/target-racer_REF.gc @@ -734,7 +734,7 @@ (a1-13 (cond ((= v1-61 (pat-material waterbottom)) - (when (and (logtest? (-> self draw status) (draw-status drwf03)) (zero? (-> self draw cur-lod))) + (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) diff --git a/test/decompiler/reference/levels/robocave/spider-egg_REF.gc b/test/decompiler/reference/levels/robocave/spider-egg_REF.gc index ff860d1f85..758604a35c 100644 --- a/test/decompiler/reference/levels/robocave/spider-egg_REF.gc +++ b/test/decompiler/reference/levels/robocave/spider-egg_REF.gc @@ -185,7 +185,7 @@ ) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (logclear! (-> self mask) (process-mask actor-pause)) (clear-collide-with-as (-> self root-override)) (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) @@ -225,7 +225,7 @@ (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) @@ -249,7 +249,7 @@ ) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (logclear! (-> self mask) (process-mask actor-pause)) (when (-> self notify-actor) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) @@ -307,7 +307,7 @@ (joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!) ) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) diff --git a/test/decompiler/reference/levels/rolling/rolling-lightning-mole_REF.gc b/test/decompiler/reference/levels/rolling/rolling-lightning-mole_REF.gc index 91005e1b0a..afa746e30f 100644 --- a/test/decompiler/reference/levels/rolling/rolling-lightning-mole_REF.gc +++ b/test/decompiler/reference/levels/rolling/rolling-lightning-mole_REF.gc @@ -797,7 +797,7 @@ (defstate lightning-mole-gone (lightning-mole) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (ja-channel-set! 0) (ja-post) (while (-> self child) @@ -1452,7 +1452,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (suspend) ) @@ -1478,7 +1478,7 @@ (suspend) (ja-eval) ) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (go peeper-wait) (none) ) @@ -1505,7 +1505,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1)) (suspend) @@ -1554,7 +1554,7 @@ (if (nonzero? (-> self sound)) (stop! (-> self sound)) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc b/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc index 4184f845a0..d53e7e6dee 100644 --- a/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc +++ b/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc @@ -398,7 +398,7 @@ :code (behavior () (dark-plant-randomize self) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (sound-play-by-name (static-sound-name "darkvine-grow") (new-sound-id) 1024 0 0 1 #t) (let ((a0-6 (-> self skel root-channel 0))) (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) @@ -428,7 +428,7 @@ (defstate dark-plant-gone (dark-plant) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let* ((f30-0 1500.0) (v1-4 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-5 (the-as number (logior #x3f800000 v1-4))) @@ -500,7 +500,7 @@ :code (behavior () (while #t - (when (and (logtest? (-> self draw status) (draw-status drwf03)) + (when (and (logtest? (-> self draw status) (draw-status was-drawn)) *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))) ) diff --git a/test/decompiler/reference/levels/rolling/rolling-race-ring_REF.gc b/test/decompiler/reference/levels/rolling/rolling-race-ring_REF.gc index 5c239a3be5..9cb2649661 100644 --- a/test/decompiler/reference/levels/rolling/rolling-race-ring_REF.gc +++ b/test/decompiler/reference/levels/rolling/rolling-race-ring_REF.gc @@ -1016,8 +1016,8 @@ (logior! (-> *target* mask) (process-mask sleep)) ) (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (logclear! (-> self draw status) (draw-status drwf01)) - (logior! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status skip-bones)) (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) (ja-play-spooled-anim (new 'static 'spool-anim :name "race-ring-second-anim" :index 4 :parts 2 :command-list '()) @@ -1032,8 +1032,8 @@ (the-as (function process-drawable symbol) false-func) ) ) - (logclear! (-> self draw status) (draw-status drwf05)) - (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status skip-bones)) + (logior! (-> self draw status) (draw-status hidden)) (cond ((handle->process (the-as int gp-2)) (deactivate (-> gp-2 process 0)) @@ -1138,7 +1138,7 @@ (set! (-> obj link) (new 'process 'actor-link-info obj)) (set! (-> obj part-track) (the-as handle #f)) (set! (-> obj alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (set! (-> obj sound) (new 'process 'ambient-sound @@ -1206,10 +1206,10 @@ ) ((and (last-ring? obj) (= (get-task-status (-> obj entity extra perm task)) (task-status need-resolution))) (let ((s5-2 (new 'stack-no-clear 'vector))) - (logclear! (-> obj draw status) (draw-status drwf01)) + (logclear! (-> obj draw status) (draw-status hidden)) (ja-post) (vector<-cspace! s5-2 (-> obj node-list data 5)) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (birth-pickup-at-point s5-2 (pickup-type fuel-cell) diff --git a/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc b/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc index 1f1625c9df..55532cb449 100644 --- a/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc +++ b/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc @@ -397,7 +397,7 @@ (defstate robber-dead (robber) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -445,7 +445,7 @@ ) (else (set! gp-0 #f) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (let ((s5-1 (new 'stack-no-clear 'vector))) (eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp) (set! (-> s5-1 y) (+ 8192.0 (-> s5-1 y))) @@ -787,7 +787,7 @@ robber-event-handler :trans (behavior () - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) ) diff --git a/test/decompiler/reference/levels/snow/ice-cube_REF.gc b/test/decompiler/reference/levels/snow/ice-cube_REF.gc index 031c950277..8d6eb1430a 100644 --- a/test/decompiler/reference/levels/snow/ice-cube_REF.gc +++ b/test/decompiler/reference/levels/snow/ice-cube_REF.gc @@ -845,13 +845,13 @@ (behavior () (ja-channel-set! 0) (ja-post) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self collide-info)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self collide-info)) (none) ) @@ -1684,7 +1684,7 @@ ) (drop-pickup (-> self enemy-info) #t *entity-pool* (-> self enemy-info) 0) (clear-collide-with-as (-> self collide-info)) - (dummy-18 self) + (cleanup-for-death self) (let ((gp-1 (new 'stack 'joint-exploder-tuning 1))) (set! (-> gp-1 duration) (seconds 3)) (set! (-> gp-1 gravity) -327680.0) diff --git a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc index fc93603182..49534cd81a 100644 --- a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc @@ -552,7 +552,7 @@ (eval-path-curve! (-> obj path) (-> obj appear-trans-top) - (if (logtest? (-> obj fact options) (fact-options fop3)) + (if (logtest? (-> obj fact options) (fact-options wrap-phase)) (get-current-phase (-> obj sync)) (get-current-phase-with-mirror (-> obj sync)) ) @@ -658,7 +658,7 @@ ) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-override)) (set! (-> self root-override trans quad) (-> self appear-trans-top quad)) (transform-post) @@ -684,7 +684,7 @@ (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self root-override)) (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) (let ((s5-0 (new 'stack-no-clear 'vector)) diff --git a/test/decompiler/reference/levels/snow/snow-obs_REF.gc b/test/decompiler/reference/levels/snow/snow-obs_REF.gc index 47b0b48d43..e02aa497bc 100644 --- a/test/decompiler/reference/levels/snow/snow-obs_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-obs_REF.gc @@ -2084,7 +2084,7 @@ (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :exit @@ -2138,7 +2138,7 @@ (behavior () (logior! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #f) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (ja-channel-push! 1 22) (let ((gp-0 #t) (s5-0 #t) @@ -2225,7 +2225,7 @@ (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *snow-log-sg* '()) (logior! (-> obj skel status) 1) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (set! (-> obj root-override trans x) (+ -1024.0 (-> obj root-override trans x))) (set! (-> obj root-override trans y) (+ -4915.2 (-> obj root-override trans y))) (set-vector! (-> obj root-override scale) 1.5 1.0 1.5 1.0) diff --git a/test/decompiler/reference/levels/snow/snow-ram-boss_REF.gc b/test/decompiler/reference/levels/snow/snow-ram-boss_REF.gc index e97439d5dc..289f3ba9f1 100644 --- a/test/decompiler/reference/levels/snow/snow-ram-boss_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-ram-boss_REF.gc @@ -1273,7 +1273,7 @@ (initialize-skeleton obj *ram-boss-sg* '()) (set! (-> obj draw origin-joint-index) (the-as uint 3)) (TODO-RENAME-45 obj *ram-boss-nav-enemy-info*) - (logclear! (-> obj enemy-info options) (fact-options fop1)) + (logclear! (-> obj enemy-info options) (fact-options has-power-cell)) (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 525) obj)) (set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 574) obj)) (set! (-> obj shield-jmod) (new 'process 'joint-mod-set-local obj 32 #f #f #t)) diff --git a/test/decompiler/reference/levels/sunken/bully_REF.gc b/test/decompiler/reference/levels/sunken/bully_REF.gc index f72f68ff23..4d57d2274e 100644 --- a/test/decompiler/reference/levels/sunken/bully_REF.gc +++ b/test/decompiler/reference/levels/sunken/bully_REF.gc @@ -1001,7 +1001,7 @@ (defstate bully-die (bully) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (shut-down! (-> self neck)) (logclear! (-> self mask) (process-mask actor-pause)) (let ((gp-0 (get-process *default-dead-pool* bully-broken-cage #x4000))) @@ -1035,7 +1035,7 @@ ) ) (increment-success-for-hint (game-text-id sunken-bully-dive-hint)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (-> self child) (suspend) ) diff --git a/test/decompiler/reference/levels/sunken/double-lurker_REF.gc b/test/decompiler/reference/levels/sunken/double-lurker_REF.gc index 4b788ba23d..ee679e5862 100644 --- a/test/decompiler/reference/levels/sunken/double-lurker_REF.gc +++ b/test/decompiler/reference/levels/sunken/double-lurker_REF.gc @@ -410,7 +410,7 @@ ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -720,7 +720,7 @@ ) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) ) (go-virtual nav-enemy-patrol) ) @@ -1314,7 +1314,7 @@ :code (behavior () (clear-collide-with-as (-> self collide-info)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (until (not (-> self child)) (suspend) ) diff --git a/test/decompiler/reference/levels/sunken/puffer_REF.gc b/test/decompiler/reference/levels/sunken/puffer_REF.gc index fe8ac214f4..a205477759 100644 --- a/test/decompiler/reference/levels/sunken/puffer_REF.gc +++ b/test/decompiler/reference/levels/sunken/puffer_REF.gc @@ -187,7 +187,10 @@ ;; Used lq/sq (defmethod dummy-28 puffer ((obj puffer)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -642,7 +645,7 @@ (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) ) ) - (logtest? (-> self draw status) (draw-status drwf03)) + (logtest? (-> self draw status) (draw-status was-drawn)) (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.2)) ) (go puffer-patrol) @@ -685,7 +688,7 @@ (go puffer-idle) ) (cond - ((logtest? (-> self draw status) (draw-status drwf03)) + ((logtest? (-> self draw status) (draw-status was-drawn)) (set! (-> self last-on-screen-time) (-> *display* base-frame-counter)) ) (else @@ -801,7 +804,7 @@ (the-as uint (drop-pickup (-> self fact-info-override) #t *entity-pool* (-> self fact-info-override) 0)) ) ((= v1-0 'death-end) - (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status drwf01))))) + (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status hidden))))) (set! (-> self draw status) (the-as draw-status v0-0)) v0-0 ) @@ -812,7 +815,7 @@ ) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (shut-down! (-> self neck)) (logclear! (-> self mask) (process-mask actor-pause)) (ja-channel-push! 1 22) diff --git a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc index a423b5a850..2ca1d74456 100644 --- a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc @@ -324,13 +324,13 @@ :exit (behavior () (if (-> self on?) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) (none) ) :trans (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) ((-> (method-of-type rigid-body-platform rigid-body-platform-float) trans)) (let* ((v1-5 (-> self root-overlay riders)) (gp-1 (nonzero? (-> v1-5 num-riders))) @@ -352,7 +352,7 @@ ) ) (if (-> self on?) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) ) (none) ) diff --git a/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc b/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc index a6d80fc608..3fd247a3a8 100644 --- a/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc +++ b/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc @@ -439,7 +439,7 @@ (set! (-> gp-0 frame-num) 0.0) ) (while #t - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (if (and (and *target* (>= 16384.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) @@ -865,15 +865,15 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :code (behavior () (while #t (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root-override trans))) - (logclear! (-> self draw status) (draw-status drwf01)) - (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status hidden)) ) (suspend) ) @@ -943,7 +943,7 @@ ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :code @@ -958,8 +958,8 @@ ) (while #t (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root-override trans))) - (logclear! (-> self draw status) (draw-status drwf01)) - (logior! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status hidden)) ) (suspend) ) @@ -1225,10 +1225,10 @@ (send-event (ppointer->process (-> self button)) 'untrigger) ) (when arg0 - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (dummy-20 self 1.0) (suspend) - (logclear! (-> self draw status) (draw-status drwf05)) + (logclear! (-> self draw status) (draw-status skip-bones)) ) (while #t (dummy-20 self 1.0) diff --git a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc index e8ffea0591..8c7feb520a 100644 --- a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc +++ b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc @@ -268,13 +268,13 @@ (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :exit (behavior () (restore-collide-with-as (-> self root-override)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (none) ) :trans diff --git a/test/decompiler/reference/levels/sunken/target-tube_REF.gc b/test/decompiler/reference/levels/sunken/target-tube_REF.gc index 85684d67e5..5eac8c5e8c 100644 --- a/test/decompiler/reference/levels/sunken/target-tube_REF.gc +++ b/test/decompiler/reference/levels/sunken/target-tube_REF.gc @@ -864,7 +864,7 @@ (set! (-> v1-30 control) 0.0) (set! (-> v1-30 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout)) ) - (dummy-9 gp-0 arg1) + (combine! gp-0 arg1) (when (= arg0 'attack) (pickup-collectable! (-> self fact-info-target) diff --git a/test/decompiler/reference/levels/swamp/billy_REF.gc b/test/decompiler/reference/levels/swamp/billy_REF.gc index 1c3f1ff008..6217dd4b08 100644 --- a/test/decompiler/reference/levels/swamp/billy_REF.gc +++ b/test/decompiler/reference/levels/swamp/billy_REF.gc @@ -274,7 +274,7 @@ 600 ) (send-event (ppointer->process (-> self billy)) 'billy-rat-die) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/swamp/kermit_REF.gc b/test/decompiler/reference/levels/swamp/kermit_REF.gc index d72c309fff..ad7429941b 100644 --- a/test/decompiler/reference/levels/swamp/kermit_REF.gc +++ b/test/decompiler/reference/levels/swamp/kermit_REF.gc @@ -656,7 +656,7 @@ ) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -689,7 +689,7 @@ (-> gp-1 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) ) diff --git a/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc b/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc index 4373a53da6..b976410575 100644 --- a/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc @@ -505,7 +505,7 @@ swamp-bat-slave-event-handler (suspend) ) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc index 678f8de077..00b9e89ad9 100644 --- a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc @@ -255,7 +255,7 @@ (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!) ) ) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000))) (when s5-3 (let ((t9-11 (method-of-type part-tracker activate))) @@ -302,7 +302,7 @@ (until (< (get-current-phase (-> self sync)) 0.5) (suspend) ) - (when (logtest? (-> self draw status) (draw-status drwf03)) + (when (logtest? (-> self draw status) (draw-status was-drawn)) (let ((s5-4 (get-process *default-dead-pool* part-tracker #x4000))) (when s5-4 (let ((t9-18 (method-of-type part-tracker activate))) @@ -424,7 +424,7 @@ :code (behavior () (process-entity-status! self (entity-perm-status complete) #t) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -785,7 +785,7 @@ (-> gp-1 ppointer) ) ) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) diff --git a/test/decompiler/reference/levels/title/title-obs_REF.gc b/test/decompiler/reference/levels/title/title-obs_REF.gc index 6928d04aa3..1d866ec8b9 100644 --- a/test/decompiler/reference/levels/title/title-obs_REF.gc +++ b/test/decompiler/reference/levels/title/title-obs_REF.gc @@ -459,8 +459,8 @@ :post (behavior () (if *progress-process* - (logior! (-> self draw status) (draw-status drwf05)) - (logclear! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) + (logclear! (-> self draw status) (draw-status skip-bones)) ) (let ((a3-0 (new-stack-vector0)) (a1-0 (new-stack-vector0)) diff --git a/test/decompiler/reference/levels/training/training-obs_REF.gc b/test/decompiler/reference/levels/training/training-obs_REF.gc index a83a19bfed..0171005b4c 100644 --- a/test/decompiler/reference/levels/training/training-obs_REF.gc +++ b/test/decompiler/reference/levels/training/training-obs_REF.gc @@ -1090,7 +1090,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post @@ -1308,7 +1308,7 @@ (while (-> self child) (suspend) ) - (dummy-18 self) + (cleanup-for-death self) (none) ) :post diff --git a/test/decompiler/reference/levels/village1/assistant_REF.gc b/test/decompiler/reference/levels/village1/assistant_REF.gc index d955ca4a9a..ec909fed83 100644 --- a/test/decompiler/reference/levels/village1/assistant_REF.gc +++ b/test/decompiler/reference/levels/village1/assistant_REF.gc @@ -55,7 +55,10 @@ (defmethod draw-npc-shadow assistant ((obj assistant)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -613,7 +616,7 @@ (go (method-of-object obj idle)) ) (else - (dummy-18 obj) + (cleanup-for-death obj) (deactivate obj) ) ) diff --git a/test/decompiler/reference/levels/village1/explorer_REF.gc b/test/decompiler/reference/levels/village1/explorer_REF.gc index 99dc327123..e8f1c52c4e 100644 --- a/test/decompiler/reference/levels/village1/explorer_REF.gc +++ b/test/decompiler/reference/levels/village1/explorer_REF.gc @@ -53,7 +53,10 @@ (defmethod draw-npc-shadow explorer ((obj explorer)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc b/test/decompiler/reference/levels/village1/village-obs_REF.gc similarity index 99% rename from test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc rename to test/decompiler/reference/levels/village1/village-obs_REF.gc index 6abcbe4f47..97686c851e 100644 --- a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc +++ b/test/decompiler/reference/levels/village1/village-obs_REF.gc @@ -343,8 +343,8 @@ (update! (-> self sound)) ) (if (= (-> self draw cur-lod) (-> self draw lod-set max-lod)) - (logior! (-> self draw status) (draw-status drwf06)) - (logclear! (-> self draw status) (draw-status drwf06)) + (logior! (-> self draw status) (draw-status do-not-check-distance)) + (logclear! (-> self draw status) (draw-status do-not-check-distance)) ) (none) ) @@ -480,13 +480,13 @@ (defmethod run-logic? windspinner ((obj windspinner)) (or (zero? (logand (-> obj mask) (process-mask actor-pause))) (or (and (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) + (logtest? (-> obj draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) (vector-vector-distance (-> obj root trans) (math-camera-pos)) ) ) (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status no-skeleton-update))) ) ) ) @@ -698,7 +698,7 @@ (+! (-> obj next-reflector-trans y) (res-lump-float a0-10 'height-info)) ) ) - (logior! (-> obj draw status) (draw-status drwf06)) + (logior! (-> obj draw status) (draw-status do-not-check-distance)) (go reflector-middle-idle) (none) ) diff --git a/test/decompiler/reference/levels/village2/assistant-village2_REF.gc b/test/decompiler/reference/levels/village2/assistant-village2_REF.gc index b0885b409c..19943ed6e6 100644 --- a/test/decompiler/reference/levels/village2/assistant-village2_REF.gc +++ b/test/decompiler/reference/levels/village2/assistant-village2_REF.gc @@ -93,7 +93,10 @@ (defmethod draw-npc-shadow assistant-levitator ((obj assistant-levitator)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc b/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc index f2d1b7d572..2b6eafc411 100644 --- a/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc +++ b/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc @@ -789,7 +789,7 @@ (defstate swamp-tetherrock-die (swamp-tetherrock) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (suspend) 0 @@ -802,7 +802,7 @@ :code (behavior () (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while #t (when (= (get-task-status (-> self entity extra perm task)) (task-status invalid)) (if (not (-> self child)) @@ -905,7 +905,7 @@ (-> s4-1 ppointer) ) ) - (logior! (-> self draw status) (draw-status drwf05)) + (logior! (-> self draw status) (draw-status skip-bones)) (let* ((s4-2 (get-process *default-dead-pool* manipy #x4000)) (s4-3 (ppointer->handle (when s4-2 (let ((t9-24 (method-of-type manipy activate))) @@ -1176,7 +1176,7 @@ (defstate precursor-arm-die (precursor-arm) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (while #t (suspend) @@ -1204,7 +1204,7 @@ ) (else (set! (-> self y-offset) -40960.0) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) diff --git a/test/decompiler/reference/levels/village2/village2-obs_REF.gc b/test/decompiler/reference/levels/village2/village2-obs_REF.gc index 5583e1fc4e..2f3471719c 100644 --- a/test/decompiler/reference/levels/village2/village2-obs_REF.gc +++ b/test/decompiler/reference/levels/village2/village2-obs_REF.gc @@ -156,13 +156,13 @@ (defstate pontoon-hidden (pontoon) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (clear-collide-with-as (-> self root-overlay)) (none) ) :exit (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (restore-collide-with-as (-> self root-overlay)) (none) ) @@ -186,7 +186,7 @@ (defstate pontoon-die (pontoon) :code (behavior () - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -200,7 +200,7 @@ (let ((v1-0 arg2)) (the-as object (cond ((= v1-0 'die) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (else @@ -219,7 +219,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v1-0 arg2)) (the-as object (when (= v1-0 'die) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) @@ -610,7 +610,7 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (let ((v1-0 arg2)) (the-as object (when (= v1-0 'end-mode) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) ) @@ -618,7 +618,7 @@ ) :enter (behavior ((arg0 handle)) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (logclear! (-> self mask) (process-mask actor-pause)) (none) ) @@ -642,7 +642,7 @@ :code (behavior ((arg0 handle)) (clone-anim arg0 3 #t "") - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -660,14 +660,14 @@ ) :enter (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (none) ) :code (behavior () (while #t (when (and (nonzero? (-> self task)) (task-closed? (the-as game-task (-> self task)) (task-status need-resolution))) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (logior! (-> self mask) (process-mask sleep)) @@ -797,7 +797,7 @@ (let ((v1-2 (-> self skel root-channel 0))) (set! (-> v1-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) ) - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (set! (-> self root-override trans quad) (-> self entity extra trans quad)) (vector-reset! (-> self draw origin)) (logior! (-> self skel status) 1) @@ -897,7 +897,7 @@ (behavior ((arg0 handle)) (clone-anim arg0 3 #t "") (format 0 "ERROR: fireboulder-be-clone ended~%") - (dummy-18 self) + (cleanup-for-death self) (deactivate self) (none) ) @@ -1215,7 +1215,7 @@ (defstate exit-chamber-dummy-wait-to-appear (exit-chamber-dummy) :code (behavior () - (logior! (-> self draw status) (draw-status drwf01)) + (logior! (-> self draw status) (draw-status hidden)) (while (not (skip-reminder? self)) (suspend) ) @@ -1238,7 +1238,7 @@ (defstate exit-chamber-dummy-idle (exit-chamber-dummy) :code (behavior () - (logclear! (-> self draw status) (draw-status drwf01)) + (logclear! (-> self draw status) (draw-status hidden)) (let ((gp-0 0)) (while (< gp-0 2) (if (skip-reminder? self) @@ -1294,7 +1294,7 @@ ) (set! (-> s5-1 frame-num) 0.0) ) - (logior! (-> obj draw status) (draw-status drwf01)) + (logior! (-> obj draw status) (draw-status hidden)) (go exit-chamber-dummy-wait-to-appear) (none) ) @@ -1531,7 +1531,7 @@ ;; definition for function ogreboss-village2-trans (defbehavior ogreboss-village2-trans ogreboss-village2 () (when (= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (dummy-18 self) + (cleanup-for-death self) (deactivate self) ) (none) diff --git a/test/decompiler/reference/levels/village2/warrior_REF.gc b/test/decompiler/reference/levels/village2/warrior_REF.gc index c15debceb1..d468c361e2 100644 --- a/test/decompiler/reference/levels/village2/warrior_REF.gc +++ b/test/decompiler/reference/levels/village2/warrior_REF.gc @@ -50,7 +50,10 @@ (defmethod draw-npc-shadow warrior ((obj warrior)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village3/assistant-village3_REF.gc b/test/decompiler/reference/levels/village3/assistant-village3_REF.gc index ad555c1be0..5bb9ef92c7 100644 --- a/test/decompiler/reference/levels/village3/assistant-village3_REF.gc +++ b/test/decompiler/reference/levels/village3/assistant-village3_REF.gc @@ -50,7 +50,10 @@ (defmethod draw-npc-shadow assistant-villagec ((obj assistant-villagec)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village3/miners_REF.gc b/test/decompiler/reference/levels/village3/miners_REF.gc index 76f9bf3395..6d95f699da 100644 --- a/test/decompiler/reference/levels/village3/miners_REF.gc +++ b/test/decompiler/reference/levels/village3/miners_REF.gc @@ -79,7 +79,10 @@ (defmethod draw-npc-shadow minertall ((obj minertall)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) @@ -282,7 +285,10 @@ (defmethod draw-npc-shadow minershort ((obj minershort)) (-> obj draw shadow-ctrl) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (let ((v1-9 (-> obj draw shadow-ctrl))) (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) ) diff --git a/test/decompiler/reference/levels/village3/sage-village3_REF.gc b/test/decompiler/reference/levels/village3/sage-village3_REF.gc index 26bbc81ef4..d73d493744 100644 --- a/test/decompiler/reference/levels/village3/sage-village3_REF.gc +++ b/test/decompiler/reference/levels/village3/sage-village3_REF.gc @@ -336,7 +336,10 @@ (defmethod draw-npc-shadow sage-villagec ((obj sage-villagec)) (let ((v1-1 (-> obj draw shadow-ctrl))) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + ((and (-> obj draw shadow) + (zero? (-> obj draw cur-lod)) + (logtest? (-> obj draw status) (draw-status was-drawn)) + ) (set! (-> v1-1 settings flags) (logand -9 (-> v1-1 settings flags))) (set! (-> v1-1 settings flags) (logand -5 (-> v1-1 settings flags))) (set! (-> v1-1 settings bot-plane w) 20480.0) diff --git a/test/decompiler/reference/levels/village_common/oracle_REF.gc b/test/decompiler/reference/levels/village_common/oracle_REF.gc index 3d515a9369..65571a4816 100644 --- a/test/decompiler/reference/levels/village_common/oracle_REF.gc +++ b/test/decompiler/reference/levels/village_common/oracle_REF.gc @@ -273,7 +273,7 @@ (set! (-> obj tasks) (get-task-control (the-as game-task (-> obj first-task)))) (set! (-> obj right-eye-cell) (the-as handle #f)) (set! (-> obj left-eye-cell) (the-as handle #f)) - (logior! (-> obj draw status) (draw-status drwf05)) + (logior! (-> obj draw status) (draw-status skip-bones)) (let ((s4-0 (new 'stack-no-clear 'vector)) (s5-1 (lambda :behavior oracle ()