jak-project/goal_src/jak2/engine/common_objs/dark-eco-pool.gc
Hat Kid da5aef8d60
decomp: finish target-[util|darkjak|swim|gun] | water | water-anim | crates | dark-eco-pool, fix skelgroup detection, add failed store/load warnings and clean up jak 3 config (#1958)
Almost done:
- `target-handler` (`(none)` event handler casts and CFG error)
- `target2` (`(none)` event handler casts)
- `powerups` (`cloud-track` does some weird stuff with `handle`s)
- `gun-states` (CFG error)

Some progress in:
- `water-flow`

Additionally:

- Clean up the two year old Jak 3 config file and add a config skeleton
(disassembling seems to not have worked, but I was able to dump obj
files and the `all_scripts` file)
- Fix automatic skelgroup detection and `defskelgroup` macro for Jak 2
(closes #1950)
- When a function decompiles without any major errors, a warning is
generated with the op id for each unresolved load and store that will
likely fail to compile (closes #1933)
2022-10-14 19:35:57 -04:00

310 lines
11 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: dark-eco-pool.gc
;; name in dgo: dark-eco-pool
;; dgos: GAME, COMMON
;; DECOMP BEGINS
(deftype dark-eco-pool (water-anim)
()
:heap-base #x80
:method-count-assert 29
:size-assert #x100
:flag-assert #x1d00800100
)
(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 11.0 :xdiv 1 :speed 1.0)
(new 'static 'ripple-wave :scale 7.5 :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-strip-dark-eco-near-lift*
(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 4.0 :xdiv 1 :speed 1.0)
(new 'static 'ripple-wave :scale 2.5 :xdiv -1 :zdiv 1 :speed 3.0)
(new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 2.0)
(new 'static 'ripple-wave)
)
)
)
(defmethod offset! dark-eco-pool ((obj dark-eco-pool))
"Offset a [[water-anim]]'s `trans` and `quat` by the lump data in `entity`."
(let ((t9-0 (method-of-type water-anim offset!)))
(t9-0 obj)
)
(logclear! (-> obj flags) (water-flags part-water))
(logior! (-> obj flags) (water-flags dark-eco))
(set! (-> obj attack-event)
(the-as
symbol
((method-of-type res-lump get-property-struct)
(-> obj entity)
'attack-event
'interp
-1000000000.0
(the-as structure 'dark-eco-pool)
(the-as (pointer res-tag) #f)
*res-static-buf*
)
)
)
(set! (-> obj sound)
(new 'process 'ambient-sound (static-sound-spec "eco-pool" :fo-min 30 :fo-max 50) (-> obj root trans))
)
(none)
)
(defmethod art-init! dark-eco-pool ((obj dark-eco-pool))
"Initialize a [[water-anim]]'s [[skel-group]], joints and ambience."
(let ((t9-0 (method-of-type water-anim art-init!)))
(t9-0 obj)
)
(let ((s5-0 (new 'process 'ripple-control)))
(set! (-> obj draw ripple) s5-0)
(set! (-> s5-0 global-scale) 3072.0)
(set! (-> s5-0 close-fade-dist) 163840.0)
(set! (-> s5-0 far-fade-dist) 245760.0)
(set! (-> s5-0 waveform) *ripple-for-dark-eco-pool*)
(set! (-> s5-0 query) (new 'process 'ripple-merc-query 100))
(case (-> obj look)
((5)
(set! (-> s5-0 waveform) *ripple-strip-dark-eco-near-lift*)
)
)
)
(none)
)
(defpartgroup group-dark-eco-nasty
:id 128
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 577 :fade-after (meters 50)))
)
(defpart 577
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
(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 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
(sp-int spt-next-time 15)
(sp-launcher-by-id spt-next-launcher 578)
)
)
(defpart 578
: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 129
:duration (seconds 2)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 583 :fade-after (meters 100) :period 600 :length 5)
(sp-item 584 :fade-after (meters 100) :period 600 :length 5 :binding 579)
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
(sp-item 585 :fade-after (meters 100) :period 600 :length 5 :binding 581)
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
)
)
(defpart 583
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
(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 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
)
)
(defpart 584
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
(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 sp-cpuinfo-flag-3)
(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 579
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
(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 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)
)
)
(defpart 580
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
(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 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
(sp-int spt-next-time 240)
(sp-launcher-by-id spt-next-launcher 397)
)
)
(defpart 585
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
(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 sp-cpuinfo-flag-3)
(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 581
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
(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 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)
)
)
(defpart 582
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
(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 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
(sp-int spt-next-time 240)
(sp-launcher-by-id spt-next-launcher 397)
)
)
(defstate idle (dark-eco-pool)
:virtual #t
:trans (behavior ()
(let ((t9-0 (-> (method-of-type water-anim idle) trans)))
(if t9-0
(t9-0)
)
)
(let* ((gp-0 (-> self draw ripple))
(f0-1 (the float (logand (-> self clock frame-counter) #xffff)))
(f0-6 (cos (the float (sar (shl (the int (* 5.0 f0-1)) 48) 48))))
(f0-7 (* f0-6 f0-6))
(f0-9 (fmax -1.0 (fmin 1.0 f0-7)))
)
(set! (-> gp-0 global-scale) (* 4096.0 (* 3.0 (+ 1.0 f0-9))))
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f0-9)))
)
(none)
)
)