mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
49e798f88c
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>
302 lines
9.3 KiB
Common Lisp
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)
|
|
)
|