jak-project/goal_src/jak1/levels/maincave/maincave-part.gc
Hat Kid 49e798f88c
jak2: macro detection for launch-particles and seconds-per-frame, add og:preserve-this comments for manual patches (#2974)
This PR adds detection of the `launch-particles` and `seconds-per-frame`
macros to the decompiler, removing a lot of bloat and hiding many
process register uses.

I also added `og:preserve-this` comments to as many manual patches and
comments as I could, which will soon be used in conjunction with CI to
hopefully catch any regressions in future big decomp update PRs.

I have some concerns about the `launch-particles` macro (more details in
`sparticle-launcher.gc`) , but thus far, I have not seen anything break
yet.

---------

Co-authored-by: water <awaterford111445@gmail.com>
2023-09-10 11:48:56 -04:00

302 lines
9.3 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: maincave-part.gc
;; name in dgo: maincave-part
;; dgos: L1, MAI, MAINCAVE
;; DECOMP BEGINS
(deftype maincave-part (part-spawner)
()
:heap-base #x60
:method-count-assert 21
:size-assert #xd0
:flag-assert #x15006000d0
)
(deftype darkcave-part (part-spawner)
()
:heap-base #x60
:method-count-assert 21
:size-assert #xd0
:flag-assert #x15006000d0
)
(defpartgroup group-part-maincave-torch
:id 318
:bounds (static-bspherem 0 3 0 4)
:parts ((sp-item 706 :fade-after (meters 200) :falloff-to (meters 220))
(sp-item 707 :fade-after (meters 140) :falloff-to (meters 140))
(sp-item 708 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3))
(sp-item 709 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23))
(sp-item 710 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17))
(sp-item 711 :fade-after (meters 60) :falloff-to (meters 60))
)
)
(defpart 711
:init-specs ((:num 0.3)
(:x (meters 0.2))
(:y (meters 1) (meters 1))
(:rot-x 5)
(:r 4096.0)
(:g 2867.2)
(:b 3276.8)
(:vel-x (meters 0) (meters 0.006666667))
(:vel-y (meters 0.026666667))
(:timer (seconds 0.6))
(:flags (aux-list))
(:next-time (seconds 0.4))
(:next-launcher 712)
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 712
:init-specs ((:fade-b -6.826667))
)
(defpart 706
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 1.5 1 1.0)
(:x (meters -0.35) (meters 0.7))
(:z (meters -0.35) (meters 0.7))
(:scale-x (meters 0.6) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0 128.0)
(:g 0.0 60.0)
(:a 0.0)
(:vel-y (meters 0.016666668) (meters 0.013333334))
(:rotvel-z (degrees -0.1) (degrees 0.2))
(:fade-a 13.066667)
(:accel-y (meters -0.0002))
(:timer (seconds 0.25))
(:flags (bit2 bit3))
(:next-time (seconds 0.05))
(:next-launcher 713)
)
)
(defpart 713
:init-specs ((:fade-a -1.3333334))
)
(defpart 708
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 1.5)
(:x (meters -0.4) (meters 0.8))
(:y (meters 1))
(:z (meters -0.4) (meters 0.8))
(:scale-x (meters 0.6) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0 128.0)
(:g 0.0 60.0)
(:a 0.0)
(:vel-y (meters 0.02) (meters 0.006666667))
(:rotvel-z (degrees -0.1) (degrees 0.2))
(:fade-a 13.066667)
(:accel-y (meters -0.0002))
(:timer (seconds 0.35))
(:flags (bit2 bit3))
(:next-time (seconds 0.05))
(:next-launcher 713)
)
)
(defpart 709
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 1.5)
(:x (meters -0.2) (meters 0.6))
(:y (meters 0.5))
(:z (meters 0) (meters 0.4))
(:scale-x (meters 0.6) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0 128.0)
(:g 0.0 60.0)
(:a 0.0)
(:vel-y (meters 0.018333333) (meters 0.0033333334))
(:rotvel-z (degrees -0.1) (degrees 0.2))
(:fade-a 13.066667)
(:accel-y (meters -0.0002))
(:timer (seconds 0.35))
(:flags (bit2 bit3))
(:next-time (seconds 0.05))
(:next-launcher 713)
)
)
(defpart 710
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 2.0)
(:x (meters 0) (meters 0.2))
(:y (meters 0.6))
(:z (meters -0.6) (meters 0.6))
(:scale-x (meters 0.7) (meters 0.4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0 128.0)
(:g 0.0 60.0)
(:a 0.0)
(:vel-y (meters 0.018333333) (meters 0.005))
(:rotvel-z (degrees -0.1) (degrees 0.2))
(:fade-a 13.066667)
(:accel-y (meters -0.0002))
(:timer (seconds 0.35))
(:flags (bit2 bit3))
(:next-time (seconds 0.05))
(:next-launcher 713)
)
)
(defpart 707
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 0.4)
(:x (meters -0.5) (meters 1))
(:y (meters 0.3))
(:z (meters -0.5) (meters 1))
(:scale-x (meters 1) (meters 0.5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 96.0)
(:b 96.0)
(:a 16.0 32.0)
(:vel-y (meters 0.01))
(:scalevel-x (meters 0.0005))
(:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.10666667)
(:fade-g -0.053333335)
(:fade-b -0.053333335)
(:fade-a -0.08)
(:accel-x (meters 0.00006666667))
(:accel-y (meters 0.000033333334))
(:friction 0.9975)
(:timer (seconds 2))
(:flags (bit2))
(:conerot-x (degrees 0) (degrees 5))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpartgroup group-cave-cavedrip-1
:id 319
:bounds (static-bspherem 0 8 0 8.25)
:parts ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 1.23) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.56) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.89) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 5.67) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 9.121) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 12.77) :length (seconds 0.017))
)
)
(defpartgroup group-cave-cavedrip-2
:id 320
:bounds (static-bspherem 0 8 0 8.25)
:parts ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 1.557) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.781) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.281) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 7.457) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 8.657) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 11.957) :length (seconds 0.017))
)
)
(defpartgroup group-cave-cavedrip-3
:id 321
:bounds (static-bspherem 0 8 0 8.25)
:parts ((sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.67) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.89) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 4.23) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 6.61) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 8.67) :length (seconds 0.017))
(sp-item 2230 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 16.87) :length (seconds 0.017))
)
)
(defpart 2231
:init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2))
(:num 3.0 4.0)
(:scale-x (meters 0.05) (meters 0.075))
(:scale-y :copy scale-x)
(:r 96.0 32.0)
(:g 112.0 64.0)
(:b 128.0 128.0)
(:a 64.0 64.0)
(:vel-y (meters 0.006666667) (meters 0.013333334))
(:fade-a -0.5688889)
(:accel-y (meters -0.00066666666))
(:timer (seconds 0.75))
(:flags (bit2 bit3 bit12 bit14))
(:conerot-x (degrees 20) (degrees 60))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpart 2232
:init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2))
(:num 1.0)
(:y (meters 0.02))
(:scale-x (meters 0.5))
(:scale-y :copy scale-x)
(:r 96.0 64.0)
(:g 64.0 16.0)
(:b 192.0 32.0)
(:a 64.0 64.0)
(:scalevel-x (meters 0.016666668) (meters 0.01))
(:scalevel-y :copy scalevel-x)
(:fade-a -1.2222222)
(:timer (seconds 0.3))
(:flags (bit2 bit3 bit12 bit14))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 2230
:init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2))
(:birth-func 'birth-func-y->userdata)
(:num 1.0)
(:y (meters 24))
(:scale-x (meters 0.1))
(:scale-y (meters 0.4))
(:r 96.0 64.0)
(:g 64.0 16.0)
(:b 192.0 32.0)
(:a 128.0)
(:vel-y (meters -0.045714285))
(:fade-a 0.5688889)
(:timer (seconds 3))
(:flags (bit2 bit3 bit12 bit14))
(:userdata -98304.0)
(:func 'check-drop-level-maincave-drip)
(:next-time (seconds 0.5) (seconds 0.247))
(:next-launcher 2233)
)
)
(defpart 2233
:init-specs ((:fade-a 0.0))
)
(defun check-drop-level-maincave-drip ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
(when (< (-> arg2 y) (-> arg1 user-float))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(if (< (rand-float-gen) 0.25)
(sound-play "water-drop")
)
(set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0)
(launch-particles (-> *part-id-table* 2231) gp-0 :rate 1.0)
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2232) gp-0 :rate 1.0)
)
)
(none)
)