mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
27bb6c6384
* [decompiler] `defpart` and `defpartgroup` * support sounds in part defs natively * make `meters_to_string` * update refs * clang * make macros in pair only work inside `(unquote ...` * update source * update finish * fix
409 lines
14 KiB
Common Lisp
409 lines
14 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: dark-eco-pool.gc
|
|
;; name in dgo: dark-eco-pool
|
|
;; dgos: GAME, COMMON, L1
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(deftype dark-eco-pool (water-anim)
|
|
()
|
|
:heap-base #x70
|
|
:method-count-assert 30
|
|
:size-assert #xdc
|
|
:flag-assert #x1e007000dc
|
|
)
|
|
|
|
|
|
(define ripple-for-misty-dark-eco-pool (new 'static 'ripple-wave-set
|
|
:count 3
|
|
:converted #f
|
|
:normal-scale 3.0
|
|
:wave
|
|
(new 'static 'inline-array ripple-wave 4
|
|
(new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 0.5)
|
|
(new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 2.0)
|
|
(new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
|
(new 'static 'ripple-wave)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define
|
|
ripple-for-maincave-dark-eco-pool
|
|
(new 'static 'ripple-wave-set
|
|
:count 3
|
|
:converted #f
|
|
:normal-scale 8.57
|
|
:wave
|
|
(new 'static 'inline-array ripple-wave 4
|
|
(new 'static 'ripple-wave :scale 14.0 :xdiv 1 :speed 1.0)
|
|
(new 'static 'ripple-wave :scale 5.25 :xdiv -1 :zdiv 1 :speed 4.0)
|
|
(new 'static 'ripple-wave :scale 0.7 :xdiv 5 :zdiv 3 :speed 2.0)
|
|
(new 'static 'ripple-wave)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define
|
|
ripple-for-finalboss-dark-eco-pool
|
|
(new 'static 'ripple-wave-set
|
|
:count 3
|
|
:converted #f
|
|
:normal-scale 4.0
|
|
:wave
|
|
(new 'static 'inline-array ripple-wave 4
|
|
(new 'static 'ripple-wave :scale 25.0 :xdiv 2 :speed -2.0)
|
|
(new 'static 'ripple-wave :scale 15.0 :xdiv -2 :zdiv 2 :speed 3.0)
|
|
(new 'static 'ripple-wave :scale 4.0 :xdiv 5 :zdiv 3 :speed 4.0)
|
|
(new 'static 'ripple-wave)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define ripple-for-dark-eco-pool (new 'static 'ripple-wave-set
|
|
:count 3
|
|
:converted #f
|
|
:normal-scale 3.0
|
|
:wave
|
|
(new 'static 'inline-array ripple-wave 4
|
|
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.0)
|
|
(new 'static 'ripple-wave :scale 15.0 :xdiv -1 :zdiv 1 :speed 4.0)
|
|
(new 'static 'ripple-wave :scale 2.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
|
(new 'static 'ripple-wave)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define
|
|
ripple-for-sunken-dark-eco-helix-room
|
|
(new 'static 'ripple-wave-set
|
|
:count 3
|
|
:converted #f
|
|
:normal-scale 8.0
|
|
:wave
|
|
(new 'static 'inline-array ripple-wave 4
|
|
(new 'static 'ripple-wave :scale 15.0 :xdiv 1 :speed 1.0)
|
|
(new 'static 'ripple-wave :scale 5.625 :xdiv -1 :zdiv 1 :speed 4.0)
|
|
(new 'static 'ripple-wave :scale 0.75 :xdiv 5 :zdiv 3 :speed 2.0)
|
|
(new 'static 'ripple-wave)
|
|
)
|
|
)
|
|
)
|
|
|
|
(defmethod TODO-RENAME-25 dark-eco-pool ((obj dark-eco-pool))
|
|
(let ((t9-0 (method-of-type water-anim TODO-RENAME-25)))
|
|
(t9-0 obj)
|
|
)
|
|
(set! (-> obj flags) (logand -8388609 (-> obj flags)))
|
|
(set! (-> obj flags) (logior #x1000000 (-> obj flags)))
|
|
(let ((v0-1 ((the-as
|
|
(function res-lump symbol symbol float structure (pointer res-tag) pointer object)
|
|
(method-of-type res-lump get-property-struct)
|
|
)
|
|
(-> obj entity)
|
|
'attack-event
|
|
'interp
|
|
-1000000000.0
|
|
'dark-eco-pool
|
|
(the-as (pointer res-tag) #f)
|
|
*res-static-buf*
|
|
)
|
|
)
|
|
)
|
|
(set! (-> obj attack-event) (the-as symbol v0-1))
|
|
v0-1
|
|
)
|
|
)
|
|
|
|
(defmethod TODO-RENAME-22 dark-eco-pool ((obj dark-eco-pool))
|
|
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
|
|
(t9-0 obj)
|
|
)
|
|
(let ((gp-0 (new 'process 'ripple-control)))
|
|
(set! (-> obj draw ripple) gp-0)
|
|
(set! (-> gp-0 global-scale) 3072.0)
|
|
(set! (-> gp-0 close-fade-dist) 163840.0)
|
|
(set! (-> gp-0 far-fade-dist) 245760.0)
|
|
(set! (-> gp-0 waveform) ripple-for-dark-eco-pool)
|
|
(set! (-> gp-0 query) (new 'process 'ripple-merc-query 100))
|
|
(case (-> obj look)
|
|
((32)
|
|
(set! (-> gp-0 waveform) ripple-for-misty-dark-eco-pool)
|
|
)
|
|
((15 16 17 18 19 20)
|
|
(set! (-> gp-0 waveform) ripple-for-maincave-dark-eco-pool)
|
|
)
|
|
((40)
|
|
(set! (-> gp-0 waveform) ripple-for-sunken-dark-eco-helix-room)
|
|
)
|
|
((41)
|
|
(set! (-> gp-0 waveform) ripple-for-finalboss-dark-eco-pool)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
(defpartgroup group-dark-eco-nasty
|
|
:id 444
|
|
:flags (use-local-clock)
|
|
:bounds (static-bspherem 0 0 0 8)
|
|
:parts
|
|
((sp-item 2020 :fade-after (meters 50)))
|
|
)
|
|
|
|
(defpart 2020
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters 0))
|
|
(sp-rnd-flt spt-scale-x (meters 1) (meters 4) 1.0)
|
|
(sp-flt spt-scale-y (meters 0.25))
|
|
(sp-flt spt-r 255.0)
|
|
(sp-flt spt-g 255.0)
|
|
(sp-flt spt-b 255.0)
|
|
(sp-rnd-flt spt-a 96.0 32.0 1.0)
|
|
(sp-flt spt-scalevel-x (meters 0.1875))
|
|
(sp-flt spt-scalevel-y (meters -0.001875))
|
|
(sp-flt spt-fade-a -3.2)
|
|
(sp-int spt-timer 10)
|
|
(sp-cpuinfo-flags bit2 bit3 bit14)
|
|
(sp-int spt-next-time 15)
|
|
(sp-launcher-by-id spt-next-launcher 2021)
|
|
)
|
|
)
|
|
|
|
(defpart 2021
|
|
:init-specs
|
|
((sp-flt spt-r 255.0) (sp-rnd-flt spt-g 128.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-flt spt-fade-a -1.28))
|
|
)
|
|
|
|
(defpartgroup group-dark-eco-pool-nasty
|
|
:id 445
|
|
:duration 600
|
|
:linger-duration 600
|
|
:flags (use-local-clock)
|
|
:bounds (static-bspherem 0 0 0 12)
|
|
:parts
|
|
((sp-item 2056 :fade-after (meters 100) :period 600 :length 5)
|
|
(sp-item 2057 :fade-after (meters 100) :period 600 :length 5 :binding 2052)
|
|
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
|
(sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
|
(sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
|
(sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 2052 :flags (start-dead launch-asap) :binding 2053)
|
|
(sp-item 2053 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 2058 :fade-after (meters 100) :period 600 :length 5 :binding 2054)
|
|
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
|
(sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
|
(sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
|
(sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 2054 :flags (start-dead launch-asap) :binding 2055)
|
|
(sp-item 2055 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
)
|
|
)
|
|
|
|
(defpart 2056
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
|
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
|
(sp-flt spt-a 64.0)
|
|
(sp-flt spt-fade-a -1.8285716)
|
|
(sp-int spt-timer 54)
|
|
(sp-cpuinfo-flags bit2 bit3 bit14)
|
|
)
|
|
)
|
|
|
|
(defpart 2057
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
|
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
|
(sp-flt spt-y (meters 1))
|
|
(sp-flt spt-scale-x (meters 0.1))
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-flt spt-a 0.0)
|
|
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
|
(sp-flt spt-accel-y -3.4133334)
|
|
(sp-flt spt-friction 0.94)
|
|
(sp-int spt-timer 240)
|
|
(sp-cpuinfo-flags bit3)
|
|
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
|
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
|
)
|
|
)
|
|
|
|
(defpart 2052
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-y (meters 0) (meters 16) 1.0)
|
|
(sp-rnd-flt spt-z (meters 0.3) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
|
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
|
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
|
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
|
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.000909091))
|
|
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-g -0.26666668)
|
|
(sp-flt spt-fade-a -0.19393939)
|
|
(sp-int-plain-rnd spt-timer 60 179 1)
|
|
(sp-cpuinfo-flags bit2 bit3 bit7 bit14)
|
|
)
|
|
)
|
|
|
|
(defpart 2053
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 32.0 96.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
|
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
|
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-a -0.01904762)
|
|
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
|
(sp-int-plain-rnd spt-timer 30 239 1)
|
|
(sp-cpuinfo-flags bit2 bit3 bit14)
|
|
(sp-int spt-next-time 240)
|
|
(sp-launcher-by-id spt-next-launcher 198)
|
|
)
|
|
)
|
|
|
|
(defpart 2058
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
|
|
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
|
(sp-flt spt-y (meters 1))
|
|
(sp-flt spt-scale-x (meters 0.1))
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-flt spt-a 0.0)
|
|
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
|
(sp-flt spt-accel-y -3.4133334)
|
|
(sp-flt spt-friction 0.94)
|
|
(sp-int spt-timer 240)
|
|
(sp-cpuinfo-flags bit3)
|
|
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
|
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
|
)
|
|
)
|
|
|
|
(defpart 2054
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-y (meters 0) (meters 16) 1.0)
|
|
(sp-rnd-flt spt-z (meters 0.3) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
|
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
|
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
|
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
|
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.000909091))
|
|
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-g -0.26666668)
|
|
(sp-flt spt-fade-a -0.19393939)
|
|
(sp-int-plain-rnd spt-timer 60 179 1)
|
|
(sp-cpuinfo-flags bit2 bit3 bit7 bit14)
|
|
)
|
|
)
|
|
|
|
(defpart 2055
|
|
:init-specs
|
|
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
|
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
|
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-a -0.01904762)
|
|
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
|
(sp-int-plain-rnd spt-timer 30 239 1)
|
|
(sp-cpuinfo-flags bit2 bit3 bit14)
|
|
(sp-int spt-next-time 240)
|
|
(sp-launcher-by-id spt-next-launcher 198)
|
|
)
|
|
)
|
|
|
|
(defstate water-vol-idle (dark-eco-pool)
|
|
:virtual #t
|
|
:trans
|
|
(behavior ()
|
|
(let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans)))
|
|
(if t9-0
|
|
(t9-0)
|
|
)
|
|
)
|
|
(let* ((gp-0 (-> self draw ripple))
|
|
(f0-1 (the float (logand (-> *display* base-frame-counter) #xffff)))
|
|
(f0-3 (cos (* 5.0 f0-1)))
|
|
(f30-0 (* f0-3 f0-3))
|
|
)
|
|
(let ((s5-0 (-> self draw ripple query)))
|
|
(set! (-> self draw ripple send-query) #t)
|
|
(set! (-> s5-0 start-vertex) (rand-vu-int-range 0 255))
|
|
(set! (-> s5-0 vertex-skip) 256)
|
|
(when (zero? (rand-vu-int-range 0 15))
|
|
(when (and (nonzero? (-> s5-0 vertex-count)) (< #x32000 (memory-free *nk-dead-pool*)))
|
|
(let ((s3-0 (rand-vu-int-range 0 (+ (-> s5-0 vertex-count) -1)))
|
|
(s4-1 (get-process *default-dead-pool* part-tracker #x4000))
|
|
)
|
|
(when s4-1
|
|
(let ((t9-7 (method-of-type part-tracker activate)))
|
|
(t9-7 (the-as part-tracker s4-1) *entity-pool* 'part-tracker (the-as pointer #x70004000))
|
|
)
|
|
(run-now-in-process s4-1 part-tracker-init (-> *part-group-id-table* 445) -1 #f #f #f (-> s5-0 data s3-0))
|
|
(-> s4-1 ppointer)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(case (-> self look)
|
|
((32)
|
|
(set! (-> gp-0 global-scale) (* 4096.0 (* 1.5 (+ 1.0 f30-0))))
|
|
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))
|
|
)
|
|
(else
|
|
(set! (-> gp-0 global-scale) (* 4096.0 (* 3.0 (+ 1.0 f30-0))))
|
|
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f30-0)))
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|