jak-project/goal_src/jak1/levels/ogre/ogre-part.gc
ManDude 0ce5835818
Create a new format for particle definitions (defpart) (#2572)
Updates the decompiler for the new format and there's new macros. This
new format should be easier to read/parse.

Also rewrote `sp-init-fields!` (both jak 1 and 2) from assembly to GOAL.

Hopefully I did not miss any regressions in Jak 1/2 while updating the
files, it's a lot.
2023-04-29 11:01:47 -04:00

656 lines
18 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: ogre-part.gc
;; name in dgo: ogre-part
;; dgos: L1, OGR
;; DECOMP BEGINS
(defpartgroup group-ogreboss-column-break
:id 464
:duration (seconds 5)
:linger-duration (seconds 10)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2193 :period (seconds 5) :length (seconds 0.017))
(sp-item 2194 :period (seconds 5) :length (seconds 0.135))
(sp-item 2195 :period (seconds 5) :length (seconds 0.067))
(sp-item 2196 :period (seconds 5) :length (seconds 0.067))
)
)
(defpart 2194
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 8.0)
(:y (meters -5) (meters 1))
(:scale-x (meters 0.6) (meters 1.2))
(:scale-y :copy scale-x)
(:r 64.0 32.0)
(:g 64.0 32.0)
(:b 64.0)
(:a 32.0 96.0)
(:vel-y (meters 0.06666667) (meters 0.23333333))
(:scalevel-x (meters -0.0026666666))
(:scalevel-y :copy scalevel-x)
(:fade-g -0.7111111)
(:fade-b -0.7111111)
(:accel-y (meters -0.00016666666) (meters -0.00016666666))
(:friction 0.9)
(:timer (seconds 1))
(:flags (bit2 bit14))
(:next-time (seconds 0.1) (seconds 0.297))
(:next-launcher 2197)
(:conerot-x (degrees 0) (degrees 120))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 2) (meters 4))
)
)
(defpart 2197
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))
)
(defpart 2196
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 6.0)
(:y (meters -5) (meters 1))
(:scale-x (meters 0.6))
(:rot-z (degrees 0) (degrees 180))
(:scale-y (meters 20))
(:r 128.0)
(:g 128.0)
(:b 96.0)
(:a 32.0 64.0)
(:scalevel-y (meters 1.5))
(:fade-g -1.6)
(:fade-b -1.6)
(:fade-a -1.6)
(:timer (seconds 0.2))
(:flags (bit2 bit3 bit14))
)
)
(defpart 2193
:init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2))
(:num 1.0)
(:y (meters -4))
(:scale-x (meters 44))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 64.0)
(:b 0.0)
(:a 128.0)
(:fade-a -2.3272727)
(:timer (seconds 0.18))
(:flags (bit2 bit3 bit14))
)
)
(defpart 2195
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 24.0)
(:y (meters -5) (meters 1))
(:scale-x (meters 5) (meters 2.5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 64.0)
(:g 32.0)
(:b 0.0)
(:a 64.0 32.0)
(:vel-y (meters 0.12) (meters 0.06666667))
(:scalevel-x (meters 0.026666667))
(:rotvel-z (degrees -0.6) (degrees 1.2))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.28444445)
(:accel-y (meters -0.00033333333) (meters -0.00033333333))
(:friction 0.8)
(:timer (seconds 6))
(:flags (bit2 bit14))
(:next-time (seconds 0.14))
(:next-launcher 2198)
(:conerot-x (degrees 0) (degrees 120))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 6))
)
)
(defpart 2198
:init-specs ((:fade-r -0.21333334) (:fade-g -0.21333334) (:fade-b 0.0) (:next-time (seconds 0.5)) (:next-launcher 2199))
)
(defpart 2199
:init-specs ((:fade-r -0.021333333)
(:fade-g 0.0)
(:fade-b 0.0)
(:fade-a -0.08533333)
(:next-time (seconds 0.75))
(:next-launcher 2200)
)
)
(defpart 2200
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))
)
(defpartgroup group-ogreboss-lava-splash
:id 465
:duration (seconds 0.5)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2023))
)
(defpart 2023
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 1.0)
(:y (meters 0))
(:scale-x (meters 0.5) (meters 1))
(:scale-y :copy scale-x)
(:r 128.0 64.0)
(:g 0.0 128.0)
(:b 0.0)
(:a 128.0)
(:vel-y (meters 0.053333335) (meters 0.053333335))
(:accel-y (meters -0.0016666667) (meters -0.00083333335))
(:timer (seconds 2))
(:flags (bit2 bit14))
(:conerot-x (degrees 0) (degrees 45))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpartgroup group-ogre-bridge-splash
:id 466
:duration (seconds 0.25)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2108) (sp-item 2109) (sp-item 2110) (sp-item 2111))
)
(defpart 2111
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 4.0 4.0)
(:y (meters -3))
(:scale-x (meters 0.3) (meters 0.75))
(:scale-y :copy scale-x)
(:r 256.0)
(:g 0.0 128.0)
(:a 128.0 128.0)
(:vel-y (meters 0.02) (meters 0.053333335))
(:scalevel-x (meters -0.003))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.0013333333))
(:timer (seconds 1.2))
(:flags (bit0 bit3))
(:conerot-x (degrees 0) (degrees 60))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 1))
)
)
(defpart 2108
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 8.0)
(:x (meters 0) (meters 2))
(:y (meters -3))
(:scale-x (meters 2) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 0.0 128.0)
(:b 0.0)
(:a 32.0 64.0)
(:vel-y (meters 0.06666667) (meters 0.06666667))
(:scalevel-x (meters 0.03529412))
(:rotvel-z (degrees -0.6) (degrees 1.2))
(:scalevel-y :copy scalevel-x)
(:fade-a -1.1294118)
(:friction 0.98)
(:timer (seconds 0.27))
(:flags (bit2 bit3 bit14))
(:conerot-x (degrees 0) (degrees 30))
(:conerot-y (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 2109
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 8.0)
(:x (meters 3) (meters 4))
(:y (meters -3))
(:scale-x (meters 2.5) (meters 2.5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 0.0 128.0)
(:b 0.0)
(:a 32.0 64.0)
(:vel-y (meters 0) (meters 0.0016666667))
(:scalevel-x (meters 0.07777778))
(:rotvel-z (degrees -0.6) (degrees 1.2))
(:scalevel-y :copy scalevel-x)
(:fade-a -2.8444443)
(:friction 0.98)
(:timer (seconds 0.14))
(:flags (bit2 bit3 bit14))
(:conerot-x (degrees 90))
(:conerot-y (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 2110
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 4.0)
(:x (meters 0) (meters 3))
(:y (meters -3) (meters 1))
(:scale-x (meters 5) (meters 8))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 0.0)
(:vel-y (meters 0.02) (meters 0.02))
(:scalevel-x (meters 0.015555556))
(:rotvel-z (degrees -0.6) (degrees 1.2))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.56666666)
(:fade-g -0.56666666)
(:fade-b -0.56666666)
(:fade-a 0.15)
(:friction 0.97)
(:timer (seconds 1.5))
(:flags (bit2 bit14))
(:next-time (seconds 0.27) (seconds 0.267))
(:next-launcher 2112)
(:conerot-x (degrees 0) (degrees 30))
(:conerot-y (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 2112
:init-specs ((:fade-a -0.08))
)
(defpartgroup group-ogreboss-boulder-grow
:id 468
:duration (seconds 0.5)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2201) (sp-item 2202) (sp-item 2203) (sp-item 2204))
)
(defpart 2203
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 8.0)
(:y (meters 0) (meters 1))
(:scale-x (meters 0.6) (meters 0.6))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 192.0 64.0)
(:b 128.0 64.0)
(:a 0.0)
(:vel-y (meters -0.13333334))
(:scalevel-x (meters -0.002))
(:scalevel-y :copy scalevel-x)
(:fade-g -6.4)
(:fade-b -6.4)
(:fade-a 6.4)
(:timer (seconds 1))
(:flags (bit2 bit14))
(:next-time (seconds 0.067))
(:next-launcher 2205)
(:conerot-x (degrees 0) (degrees 360))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 12) (meters 4))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 2205
:init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:fade-b -0.42666668) (:fade-a -0.85333335))
)
(defpart 2204
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 2.0)
(:scale-x (meters 0.3) (meters 0.1))
(:rot-z (degrees 0) (degrees 180))
(:scale-y (meters 16))
(:r 128.0)
(:g 96.0)
(:b 64.0)
(:a 32.0 64.0)
(:scalevel-y (meters 1.2))
(:fade-g -1.0666667)
(:fade-b -1.0666667)
(:fade-a -1.6)
(:timer (seconds 0.1))
(:flags (bit2 bit3 bit14))
)
)
(defpart 2201
:init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2))
(:num 1.0)
(:y (meters 2))
(:scale-x (meters 28) (meters 4))
(:scale-y :copy scale-x)
(:r 128.0 64.0)
(:g 0.0 64.0)
(:b 0.0)
(:a 64.0 64.0)
(:fade-a -2.3272727)
(:timer (seconds 0.017))
(:flags (bit2 bit3 bit14))
)
)
(defpart 2202
:init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2))
(:num 1.0)
(:y (meters 2))
(:scale-x (meters 16) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 196.0 64.0)
(:g 128.0 64.0)
(:b 64.0 64.0)
(:a 32.0)
(:fade-a -2.3272727)
(:timer (seconds 0.035))
(:flags (bit2 bit3 bit14))
)
)
(defpartgroup group-ogreboss-missile
:id 469
:bounds (static-bspherem 0 0 0 3)
:parts ((sp-item 1933) (sp-item 1934))
)
(defpart 1934
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 0.1 0.3)
(:x (meters -1) (meters 2))
(:y (meters -1) (meters 2))
(:z (meters -1) (meters 2))
(:scale-x (meters 4.8) (meters 0.9))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 96.0)
(:b 32.0)
(:a 48.0 48.0)
(:vel-y (meters 0.0016666667) (meters 0.00083333335))
(:scalevel-x (meters 0.006666667))
(:rotvel-z (degrees -1.9999999) (degrees 3.9999998))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.21333334)
(:fade-g -0.10666667)
(:fade-b 0.10666667)
(:fade-a -0.32)
(:accel-y (meters -0.000006666667))
(:timer (seconds 1))
(:flags (bit2 bit14))
)
)
(defpart 1933
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 0.1 0.3)
(:x (meters -1) (meters 2))
(:y (meters -1) (meters 2))
(:z (meters -1) (meters 2))
(:scale-x (meters 4) (meters 0.9))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 96.0)
(:b 32.0)
(:a 80.0 80.0)
(:vel-y (meters 0.0016666667) (meters 0.00083333335))
(:rotvel-z (degrees -1.9999999) (degrees 3.9999998))
(:fade-g -0.53333336)
(:fade-b -0.17777778)
(:fade-a -1.0666667)
(:accel-y (meters -0.000006666667))
(:timer (seconds 0.6))
(:flags (bit2 bit3 bit14))
)
)
(defpartgroup group-ogreboss-pre-missile
:id 470
:duration (seconds 0.5)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 3)
:parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017))
(sp-item 2206 :period (seconds 2) :length (seconds 0.135))
(sp-item 2206 :period (seconds 2) :length (seconds 0.135))
(sp-item 2206 :period (seconds 2) :length (seconds 0.1))
(sp-item 2206 :period (seconds 2) :length (seconds 0.067))
(sp-item 2082 :period (seconds 2) :length (seconds 0.067))
(sp-item 2082 :period (seconds 2) :length (seconds 0.035))
(sp-item 2082 :period (seconds 2) :length (seconds 0.017))
)
)
(defpart 2206
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 8.0)
(:y (meters 0) (meters 1))
(:scale-x (meters 0.4) (meters 0.8))
(:scale-y :copy scale-x)
(:r 192.0 64.0)
(:g 192.0 64.0)
(:b 128.0)
(:a 32.0 96.0)
(:vel-y (meters 0.04) (meters 0.16))
(:scalevel-x (meters -0.0026666666))
(:scalevel-y :copy scalevel-x)
(:fade-g -2.1333334)
(:fade-b -1.4222223)
(:accel-y (meters -0.00016666666) (meters -0.00016666666))
(:friction 0.9)
(:timer (seconds 1))
(:flags (bit2 bit14))
(:next-time (seconds 0.1) (seconds 0.297))
(:next-launcher 2083)
(:conerot-x (degrees 0) (degrees 180))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 2) (meters 8))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpartgroup group-ogreboss-missile-impact
:id 471
:duration (seconds 1)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 16)
:parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017))
(sp-item 2080 :period (seconds 2) :length (seconds 0.135))
(sp-item 2148 :period (seconds 2) :length (seconds 0.067))
(sp-item 2082 :period (seconds 2) :length (seconds 0.067))
)
)
(defpartgroup group-ogre-lava-lava-20x20
:id 472
:bounds (static-bspherem 0 0 0 14)
:parts ((sp-item 2030 :fade-after (meters 40) :falloff-to (meters 40))
(sp-item 2031 :fade-after (meters 100) :falloff-to (meters 100))
(sp-item 2032 :fade-after (meters 80) :falloff-to (meters 80) :binding 2028)
(sp-item 2028 :flags (start-dead))
(sp-item 2028 :flags (start-dead))
(sp-item 2028 :flags (start-dead))
(sp-item 2028 :flags (start-dead))
(sp-item 2028 :flags (start-dead))
(sp-item 2028 :flags (start-dead))
(sp-item 2028 :flags (start-dead))
(sp-item 2028 :flags (start-dead))
(sp-item 2033 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.457) :length (seconds 0.017) :binding 2029)
(sp-item 2033 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.78) :length (seconds 0.017) :binding 2029)
(sp-item 2033 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 0.307) :length (seconds 0.017) :binding 2029)
(sp-item 2029 :flags (start-dead))
)
)
(defpart 2031
:init-specs ((:texture (new 'static 'texture-id :page #x2))
(:num 0.05)
(:x (meters -10) (meters 20))
(:y (meters 0.5))
(:z (meters -10) (meters 20))
(:scale-x (meters 6) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 256.0)
(:g 192.0)
(:b 128.0)
(:a 0.0)
(:vel-y (meters 0.01))
(:scalevel-x (meters 0.0033333334))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.64)
(:timer (seconds 2))
(:flags (bit2))
(:next-time (seconds 0.125) (seconds 0.12))
(:next-launcher 2034)
(:rotate-y (degrees 0))
)
)
(defpart 2033
:init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2))
(:num 1.5)
(:x (meters -10) (meters 20))
(:y (meters 0))
(:z (meters -10) (meters 20))
(:scale-x (meters 2.5) (meters 1.5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 0.0 128.0)
(:a 255.0)
(:rotvel-z (degrees -0.8) (degrees 6.8))
(:fade-a -12.0)
(:timer (seconds 0.067))
(:flags (bit2 bit3))
(:rotate-y (degrees 0))
)
)
(defpart 2032
:init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2))
(:num 0.02 0.02)
(:x (meters -10) (meters 20))
(:y (meters 0))
(:z (meters -10) (meters 20))
(:scale-x (meters 0.75) (meters 0.25))
(:scale-y :copy scale-x)
(:r 256.0)
(:g 0.0 128.0)
(:a 255.0)
(:vel-y (meters 0.04) (meters 0.02))
(:fade-g -0.30476192)
(:accel-y (meters -0.0026666666))
(:timer (seconds 0.6))
(:flags (bit2 bit3))
(:conerot-x (degrees 0) (degrees 30))
(:conerot-y (degrees 0) (degrees 360))
(:rotate-y (degrees 0))
)
)
(defpart 2030
:init-specs ((:num 1.0)
(:x (meters -10) (meters 20))
(:y (meters 0.5))
(:z (meters -10) (meters 20))
(:rot-x 5)
(:r 8192.0)
(:g 5324.8)
(:b 5324.8)
(:vel-y (meters 0.006666667) (meters 0.006666667))
(:fade-r 40.96)
(:fade-g 27.306667)
(:fade-b 38.229332)
(:timer (seconds 0.5))
(:flags (aux-list))
(:next-time (seconds 0.25))
(:next-launcher 2035)
(:rotate-y (degrees 0))
)
)
(defpart 2035
:init-specs ((:fade-b 16.384))
)
(defpart 2034
:init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2036))
)
(defpart 2036
:init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2037))
)
(defpart 2037
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667))
)
(defpart 2028
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 0.7)
(:scale-x (meters 0.75) (meters 0.25))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 0.0 128.0)
(:a 128.0 128.0)
(:scalevel-x (meters -0.0029166667))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.00033333333))
(:timer (seconds 0.1) (seconds 0.597))
(:flags (bit0 bit3))
(:rotate-y (degrees 45))
)
)
(defpart 2029
:init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2))
(:num 1.0 6.0)
(:scale-x (meters 0.2) (meters 0.5))
(:scale-y :copy scale-x)
(:r 256.0)
(:g 0.0 128.0)
(:a 128.0 128.0)
(:vel-y (meters 0.006666667) (meters 0.02))
(:scalevel-x (meters -0.0023333333))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.00066666666))
(:timer (seconds 1.2))
(:flags (bit0 bit3))
(:conerot-x (degrees 0) (degrees 60))
(:conerot-y (degrees 0) (degrees 360))
)
)
(deftype ogre-part (part-spawner)
()
:heap-base #x60
:method-count-assert 21
:size-assert #xd0
:flag-assert #x15006000d0
)