mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
b72383964f
Co-authored-by: water <awaterford111445@gmail.com>
1590 lines
54 KiB
Common Lisp
1590 lines
54 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: demo-obs.gc
|
|
;; name in dgo: demo-obs
|
|
;; dgos: DEMO
|
|
|
|
(declare-type demo-control process)
|
|
(define-extern *demo-control* (pointer demo-control))
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(deftype demo-control (process)
|
|
((selected int32 :offset-assert 128)
|
|
(sprites hud-sprite 2 :inline :offset-assert 144)
|
|
(sprite-pos vector :inline :offset-assert 272)
|
|
(sprite-draw uint32 :offset-assert 288)
|
|
(buffer external-art-buffer 2 :offset-assert 292)
|
|
(want int32 2 :offset-assert 300)
|
|
(have int32 2 :offset-assert 308)
|
|
(draw int32 :offset-assert 316)
|
|
(active symbol :offset-assert 320)
|
|
(spark-time time-frame :offset-assert 328)
|
|
(gui-id uint32 :offset-assert 336)
|
|
)
|
|
:heap-base #xe0
|
|
:method-count-assert 15
|
|
:size-assert #x154
|
|
:flag-assert #xf00e00154
|
|
(:methods
|
|
(idle () _type_ :state 14)
|
|
)
|
|
)
|
|
|
|
|
|
;; WARN: Return type mismatch process vs demo-control.
|
|
(defmethod relocate demo-control ((obj demo-control) (arg0 int))
|
|
(dotimes (v1-0 2)
|
|
(if (nonzero? (-> obj buffer v1-0))
|
|
(&+! (-> obj buffer v1-0) arg0)
|
|
)
|
|
)
|
|
(the-as demo-control ((method-of-type process relocate) obj arg0))
|
|
)
|
|
|
|
(defmethod deactivate demo-control ((obj demo-control))
|
|
(dotimes (s5-0 2)
|
|
(set-pending-file (-> obj buffer s5-0) (the-as string #f) -1 (the-as handle #f) 100000000.0)
|
|
)
|
|
(dotimes (s5-1 2)
|
|
(update (-> obj buffer s5-1))
|
|
)
|
|
((method-of-type process deactivate) obj)
|
|
(none)
|
|
)
|
|
|
|
(defskelgroup skel-jak-demo-logo jak-logo jak-logo-lod0-jg -1
|
|
((jak-logo-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 10 0 20)
|
|
:origin-joint-index 3
|
|
)
|
|
|
|
(defskelgroup skel-jak-demo-stand jak-stand jak-stand-lod0-jg -1
|
|
((jak-stand-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 10 0 20)
|
|
:origin-joint-index 3
|
|
)
|
|
|
|
;; WARN: Return type mismatch time-frame vs none.
|
|
(defun demo-plug-lightning ((arg0 process-drawable) (arg1 vector) (arg2 cspace))
|
|
(local-vars (sv-32 cspace) (sv-48 int) (sv-64 symbol) (sv-80 int) (sv-96 vector))
|
|
(set! sv-32 arg2)
|
|
(let ((s5-0 (get-process *default-dead-pool* lightning-tracker #x4000)))
|
|
(when s5-0
|
|
(let ((t9-1 (method-of-type lightning-tracker activate)))
|
|
(t9-1
|
|
(the-as lightning-tracker s5-0)
|
|
*entity-pool*
|
|
(symbol->string (-> lightning-tracker symbol))
|
|
(the-as pointer #x70004000)
|
|
)
|
|
)
|
|
(let ((s3-0 run-function-in-process)
|
|
(s2-0 s5-0)
|
|
(s1-0 lightning-tracker-init)
|
|
(s0-0 (-> *lightning-spec-id-table* 1))
|
|
)
|
|
(set! sv-48 30)
|
|
(set! sv-64 (the-as symbol #f))
|
|
(set! sv-80 (+ (-> sv-32 joint number) 1))
|
|
(set! sv-96 (new 'stack-no-clear 'vector))
|
|
(set! (-> sv-96 x) (+ (-> arg1 x) (rand-vu-float-range -4096.0 4096.0)))
|
|
(set! (-> sv-96 y) (+ (-> arg1 y) (rand-vu-float-range -4096.0 4096.0)))
|
|
(set! (-> sv-96 z) (+ (-> arg1 z) (rand-vu-float-range -4096.0 4096.0)))
|
|
(set! (-> sv-96 w) 1.0)
|
|
((the-as (function object object object object object object object object none) s3-0)
|
|
s2-0
|
|
s1-0
|
|
s0-0
|
|
sv-48
|
|
sv-64
|
|
arg0
|
|
sv-80
|
|
sv-96
|
|
)
|
|
)
|
|
(-> s5-0 ppointer)
|
|
)
|
|
)
|
|
(let ((v1-20 (handle->process (-> *game-info* controller 0))))
|
|
(if v1-20
|
|
(set! (-> (the-as demo-control v1-20) spark-time) (-> *display* base-clock frame-counter))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
(scene-method-16
|
|
(new 'static 'scene
|
|
:name "demo-disk-intro"
|
|
:extra #f
|
|
:info #f
|
|
:mask-to-clear #x1000000
|
|
:entity "scene-stage-47"
|
|
:art-group "scenecamera"
|
|
:anim "demo-disk-intro"
|
|
:parts 10
|
|
:command-list '((0
|
|
(want-force-vis 'ctysluma #t)
|
|
(want-force-vis 'ctywide #t)
|
|
(kill "ctysluma-part-181")
|
|
(kill "ctysluma-part-182")
|
|
(kill "ctysluma-part-187")
|
|
(kill "ctysluma-part-188")
|
|
(send-event "jak-demo-logo" 'color-mult 0 0 0 1)
|
|
(apply
|
|
,(lambda ()
|
|
(send-event (ppointer->process *time-of-day*) 'change 'ratio 0)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'hour 23)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'minute 0)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'second 0)
|
|
(none)
|
|
)
|
|
)
|
|
(joint-eval
|
|
,(lambda ((arg0 process-drawable))
|
|
(logior! (-> arg0 draw global-effect) (draw-control-global-effect title-light))
|
|
(case (scf-get-territory)
|
|
((1)
|
|
(case (-> *setting-control* user-current language)
|
|
(((language-enum spanish))
|
|
(send-event arg0 'segment 32 0)
|
|
)
|
|
(((language-enum french))
|
|
(send-event arg0 'segment 64 0)
|
|
)
|
|
(else
|
|
(send-event arg0 'segment 512 0)
|
|
)
|
|
)
|
|
)
|
|
((2)
|
|
(send-event arg0 'segment 256 0)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
entity
|
|
"jak-demo-logo"
|
|
joint
|
|
"plugsparks"
|
|
)
|
|
(fadein (seconds (new 'static 'bfloat :data 1.0)))
|
|
)
|
|
(10 (want-force-vis 'ctysluma #f) (want-force-vis 'ctywide #f) (send-event *target* 'change-mode 'demo))
|
|
(991
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 0.3)
|
|
(new 'static 'bfloat :data 0.3)
|
|
(new 'static 'bfloat :data 0.3)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
(part-tracker
|
|
"group-demo-plug"
|
|
entity
|
|
"jak-demo-logo"
|
|
joint
|
|
"plugsparks"
|
|
track
|
|
#t
|
|
duration
|
|
(frame-range (new 'static 'bfloat :data 991.0) (new 'static 'bfloat :data 1011.0))
|
|
)
|
|
)
|
|
(992
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(998
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 0.3)
|
|
(new 'static 'bfloat :data 0.3)
|
|
(new 'static 'bfloat :data 0.3)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(999
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(1004
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 0.5)
|
|
(new 'static 'bfloat :data 0.5)
|
|
(new 'static 'bfloat :data 0.5)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(1005
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(1008
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 0.85)
|
|
(new 'static 'bfloat :data 0.85)
|
|
(new 'static 'bfloat :data 0.85)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(1009
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(1010
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(1011
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(joint-eval demo-plug-lightning entity "jak-demo-logo" joint "plugsparks")
|
|
)
|
|
(1012
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
)
|
|
(1013
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
)
|
|
(1033
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
)
|
|
(1063
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 0.5)
|
|
(new 'static 'bfloat :data 0.5)
|
|
(new 'static 'bfloat :data 0.5)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
)
|
|
(1073
|
|
(send-event
|
|
"jak-demo-logo"
|
|
'color-mult
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
(new 'static 'bfloat :data 1.0)
|
|
)
|
|
(send-event "jak-demo-logo" 'segment 2 0)
|
|
)
|
|
(1105
|
|
(apply
|
|
,(lambda ((arg0 process-drawable) (arg1 vector) (arg2 cspace))
|
|
(with-pp
|
|
(let ((v1-1
|
|
(lookup-gui-connection *gui-control* pp (gui-channel art-load) (the-as string #f) (new 'static 'sound-id))
|
|
)
|
|
)
|
|
(if v1-1
|
|
(sound-pause (-> v1-1 id))
|
|
)
|
|
)
|
|
(send-event (handle->process (-> *game-info* controller 0)) 'pause)
|
|
(time-of-day-setup #t)
|
|
(the-as object (remove-setting! 'half-speed))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:cut-list '()
|
|
:wait-ground-time (seconds 1)
|
|
:draw-target #f
|
|
:abort #f
|
|
:actor (new 'static 'boxed-array :type scene-actor
|
|
(new 'static 'scene-actor
|
|
:name "scenecamera"
|
|
:level #f
|
|
:art-group "skel-scenecamera"
|
|
:prefix ""
|
|
:draw-frames '((min max))
|
|
:scissor-frames '()
|
|
:camera 4
|
|
:shadow-flags -1
|
|
:shadow-volume-joint #f
|
|
)
|
|
(new 'static 'scene-actor
|
|
:name "sidekick-highres"
|
|
:level 'demo
|
|
:art-group "skel-sidekick-highres"
|
|
:prefix ""
|
|
:draw-frames '((min max))
|
|
:scissor-frames '()
|
|
:light-index #x1e
|
|
:flags #x1
|
|
:shadow-flags -1
|
|
:shadow-volume-joint #f
|
|
)
|
|
(new 'static 'scene-actor
|
|
:name "jak-demo-logo"
|
|
:level 'demo
|
|
:art-group "skel-jak-demo-logo"
|
|
:prefix ""
|
|
:draw-frames '((min max))
|
|
:scissor-frames '()
|
|
:flags #x1
|
|
:shadow-flags -1
|
|
:shadow-volume-joint #f
|
|
:no-draw-seg #x6e
|
|
)
|
|
(new 'static 'scene-actor
|
|
:name "jak-demo-stand"
|
|
:level 'demo
|
|
:art-group "skel-jak-demo-stand"
|
|
:prefix ""
|
|
:draw-frames '((min max))
|
|
:scissor-frames '()
|
|
:flags #x1
|
|
:shadow-flags -1
|
|
:shadow-volume-joint #f
|
|
)
|
|
)
|
|
:load-point-obj "demo-movie"
|
|
:end-point-obj "demo-movie-end"
|
|
:borrow '()
|
|
:sfx-volume 1.0
|
|
:ambient-volume 1.0
|
|
:blackout-end #f
|
|
:peaceful #t
|
|
:music-delay 1500.0
|
|
:save #t
|
|
)
|
|
)
|
|
|
|
(defbehavior demo-screen-change demo-control ((arg0 symbol) (arg1 int) (arg2 symbol) (arg3 int))
|
|
(when arg3
|
|
(let ((s3-0 (the-as int (-> *setting-control* user-current language))))
|
|
(if (and (= (the-as language-enum s3-0) (language-enum english)) (= (scf-get-territory) 1))
|
|
(set! s3-0 7)
|
|
)
|
|
(if (>= (the-as int arg0) 0)
|
|
(set! arg0 (the-as symbol (+ (the-as uint arg0) (* 3 s3-0))))
|
|
)
|
|
(if (>= arg1 0)
|
|
(+! arg1 (* 3 s3-0))
|
|
)
|
|
)
|
|
)
|
|
(set! (-> self want 0) (the-as int arg0))
|
|
(set! (-> self want 1) (-> self draw))
|
|
(when arg2
|
|
(set-setting! 'bg-a 'abs #x3f800000 0)
|
|
(set! (-> *setting-control* user-current bg-a) 1.0)
|
|
(apply-settings *setting-control*)
|
|
)
|
|
(when (>= (-> self draw) 0)
|
|
(set-setting! 'bg-a 'abs #x3f800000 0)
|
|
(apply-settings *setting-control*)
|
|
(while (!= (-> *setting-control* user-current bg-a) 1.0)
|
|
(suspend)
|
|
)
|
|
)
|
|
(set! (-> self draw) (the-as int arg0))
|
|
(set! (-> self active) #f)
|
|
(while (and (>= (-> self draw) 0) (not (-> self active)))
|
|
(suspend)
|
|
)
|
|
(remove-setting! 'bg-a)
|
|
(set! (-> self want 1) arg1)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defun demo-wait-for-press ((arg0 time-frame) (arg1 time-frame) (arg2 symbol))
|
|
(with-pp
|
|
(let ((s4-0 (-> pp clock frame-counter))
|
|
(s3-0 #f)
|
|
)
|
|
(while (not (or (>= (- (-> pp clock frame-counter) s4-0) arg1) (and (>= (- (-> pp clock frame-counter) s4-0) arg0) s3-0))
|
|
)
|
|
(if (cpad-pressed? 0 triangle)
|
|
(set! s3-0 #t)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
|
|
;; WARN: Return type mismatch int vs object.
|
|
;; WARN: new jak 2 until loop case, check carefully
|
|
(defbehavior demo-menu demo-control ()
|
|
(local-vars (sv-112 font-context))
|
|
(sound-play "dmenu-hit")
|
|
(let ((gp-1 (cond
|
|
((= *kernel-boot-message* 'demo-shared)
|
|
(new 'static 'boxed-array :type uint32 #x24f #x250 #x123)
|
|
)
|
|
((= (scf-get-territory) 1)
|
|
(new 'static 'boxed-array :type uint32 #x24f #x250)
|
|
)
|
|
(else
|
|
(new 'static 'boxed-array :type uint32 #x24f #x250 #x251)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(until #f
|
|
(when (not (paused?))
|
|
(cond
|
|
((and (logtest? (pad-buttons up l-analog-down) (-> *cpad-list* cpads 0 button0-rel 0))
|
|
(> (-> self selected) 0)
|
|
)
|
|
(seekl! (-> self selected) 0 1)
|
|
(sound-play "dmenu-move")
|
|
)
|
|
((and (logtest? (pad-buttons down l-analog-up) (-> *cpad-list* cpads 0 button0-rel 0))
|
|
(< (-> self selected) (+ (-> gp-1 length) -1))
|
|
)
|
|
(seekl! (-> self selected) (+ (-> gp-1 length) -1) 1)
|
|
(sound-play "dmenu-move")
|
|
)
|
|
((logtest? (pad-buttons confirm) (-> *cpad-list* cpads 0 button0-rel 0))
|
|
(sound-play "dmenu-pick")
|
|
(return (the-as object (-> self selected)))
|
|
)
|
|
)
|
|
(set! sv-112 (new
|
|
'stack
|
|
'font-context
|
|
*font-default-matrix*
|
|
64
|
|
312
|
|
0.0
|
|
(font-color default-#cddbcd)
|
|
(font-flags shadow kerning)
|
|
)
|
|
)
|
|
(let ((v1-25 sv-112))
|
|
(set! (-> v1-25 width) (the float 384))
|
|
)
|
|
(let ((v1-26 sv-112))
|
|
(set! (-> v1-26 height) (the float 50))
|
|
)
|
|
(set! (-> sv-112 flags) (font-flags shadow kerning middle left large))
|
|
(set! (-> sv-112 scale) 0.7)
|
|
(dotimes (s5-4 (-> gp-1 length))
|
|
(if (= (-> self selected) s5-4)
|
|
(set! (-> sv-112 color) (font-color #f1f104))
|
|
(set! (-> sv-112 color) (font-color #dadada))
|
|
)
|
|
(print-game-text
|
|
(lookup-text! *common-text* (the-as game-text-id (-> gp-1 s5-4)) #f)
|
|
sv-112
|
|
#f
|
|
44
|
|
(bucket-id progress)
|
|
)
|
|
(set! (-> sv-112 origin y) (+ 22.0 (-> sv-112 origin y)))
|
|
)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
#f
|
|
-1
|
|
)
|
|
|
|
(defstate idle (demo-control)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(the-as object (case event-type
|
|
(('pause)
|
|
(let ((v0-0 2))
|
|
(set! (-> *game-info* demo-state) (the-as uint v0-0))
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:code (behavior ()
|
|
(let ((v1-1 (-> *game-info* demo-state)))
|
|
(cond
|
|
((or (zero? v1-1) (= v1-1 1))
|
|
(when (zero? (-> *game-info* demo-state))
|
|
(case (scf-get-territory)
|
|
((2)
|
|
(let ((t9-1 demo-screen-change)
|
|
(a0-3 25)
|
|
(a1-1 26)
|
|
(a2-0 #t)
|
|
)
|
|
(t9-1 (the-as symbol a0-3) a1-1 a2-0 (the-as int #f))
|
|
(let ((a1-2 (new 'stack-no-clear 'array 'symbol 6)))
|
|
(set! (-> a1-2 5) #f)
|
|
(set! (-> a1-2 4) #f)
|
|
(set! (-> a1-2 3) #f)
|
|
(set! (-> a1-2 2) 'ctywide)
|
|
(set! (-> a1-2 1) 'ctysluma)
|
|
(set! (-> a1-2 0) 'demo)
|
|
(want-levels *load-state* a1-2)
|
|
)
|
|
(demo-wait-for-press (seconds 1) (seconds 5) a2-0)
|
|
)
|
|
(let ((t9-4 demo-screen-change)
|
|
(a0-6 26)
|
|
(a1-4 -1)
|
|
(a2-1 #f)
|
|
)
|
|
(t9-4 (the-as symbol a0-6) a1-4 a2-1 (the-as int #f))
|
|
(demo-wait-for-press (seconds 1) (seconds 5) a2-1)
|
|
)
|
|
(demo-screen-change (the-as symbol -1) -1 #f (the-as int #t))
|
|
)
|
|
)
|
|
)
|
|
(set! (-> *game-info* demo-state) (the-as uint 1))
|
|
(let ((gp-1
|
|
(ppointer->handle (process-spawn scene-player :init scene-player-init "demo-disk-intro" #t "demo-movie"))
|
|
)
|
|
)
|
|
(while (and (handle->process (the-as handle gp-1)) (= (-> *game-info* demo-state) 1))
|
|
(if *target*
|
|
(set! (-> *target* control trans quad) (-> (math-camera-pos) quad))
|
|
)
|
|
(set! (-> *game-info* kiosk-timeout) (the-as uint (-> *display* game-clock frame-counter)))
|
|
(set! (-> *ACTOR-bank* birth-max) 1000)
|
|
(suspend)
|
|
)
|
|
)
|
|
(set! (-> *game-info* demo-state) (the-as uint 10))
|
|
)
|
|
((= v1-1 10)
|
|
(set! (-> self gui-id)
|
|
(the-as uint (add-process *gui-control* self (gui-channel jak) (gui-action queue) "demoend" -99.0 0))
|
|
)
|
|
(if (and (!= (scf-get-territory) 2) (= (-> *setting-control* user-current language) (language-enum japanese)))
|
|
(demo-screen-change (the-as symbol 2) -1 #t (the-as int #f))
|
|
(demo-screen-change (the-as symbol 2) -1 #t (the-as int #t))
|
|
)
|
|
(while (!= (get-status *gui-control* (the-as sound-id (-> self gui-id))) (gui-status ready))
|
|
(suspend)
|
|
)
|
|
(set-action!
|
|
*gui-control*
|
|
(gui-action play)
|
|
(the-as sound-id (-> self gui-id))
|
|
(gui-channel none)
|
|
(gui-action none)
|
|
(the-as string #f)
|
|
(the-as (function gui-connection symbol) #f)
|
|
(the-as process #f)
|
|
)
|
|
(cond
|
|
((zero? (scf-get-territory))
|
|
(let ((gp-3 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-3) (seconds 0.38))
|
|
(suspend)
|
|
)
|
|
)
|
|
(set! (-> self sprite-draw) (the-as uint 3))
|
|
(set-vector! (-> self sprite-pos) -512.0 40.0 0.0 1.0)
|
|
(let ((gp-4 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-4) (seconds 0.25))
|
|
(set! (-> self sprite-pos x)
|
|
(lerp-scale -512.0 0.0 (sin (* 218.45334 (the float (- (-> self clock frame-counter) gp-4)))) 0.0 1.0)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-5 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-5) (seconds 2))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-6 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-6) (seconds 0.25))
|
|
(set! (-> self sprite-pos x)
|
|
(lerp-scale 0.0 512.0 (sin (* 218.45334 (the float (- (-> self clock frame-counter) gp-6)))) 0.0 1.0)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
(set! (-> self sprite-draw) (the-as uint 1))
|
|
(set-vector! (-> self sprite-pos) 30.0 -240.0 0.0 1.0)
|
|
(let ((gp-7 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-7) (seconds 0.25))
|
|
(set! (-> self sprite-pos y)
|
|
(lerp-scale -240.0 270.0 (sin (* 218.45334 (the float (- (-> self clock frame-counter) gp-7)))) 0.0 1.0)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-8 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-8) (seconds 2))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-9 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-9) (seconds 0.25))
|
|
(set! (-> self sprite-pos y)
|
|
(lerp-scale 270.0 720.0 (sin (* 218.45334 (the float (- (-> self clock frame-counter) gp-9)))) 0.0 1.0)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
(set! (-> self sprite-draw) (the-as uint 2))
|
|
(set-vector! (-> self sprite-pos) 20.0 40.0 0.0 1.0)
|
|
(let ((gp-10 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-10) (seconds 0.25))
|
|
(set! (-> self sprite-pos y)
|
|
(lerp-scale 720.0 20.0 (sin (* 218.45334 (the float (- (-> self clock frame-counter) gp-10)))) 0.0 1.0)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((a1-21 (new 'stack-no-clear 'array 'symbol 6)))
|
|
(set! (-> a1-21 5) #f)
|
|
(set! (-> a1-21 4) #f)
|
|
(set! (-> a1-21 3) #f)
|
|
(set! (-> a1-21 2) 'ctysluma)
|
|
(set! (-> a1-21 1) 'ctywide)
|
|
(set! (-> a1-21 0) 'demo)
|
|
(want-levels *load-state* a1-21)
|
|
)
|
|
(let ((gp-11 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-11) (seconds 2))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-12 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-12) (seconds 0.25))
|
|
(set! (-> self sprite-pos y)
|
|
(lerp-scale 20.0 -720.0 (sin (* 218.45334 (the float (- (-> self clock frame-counter) gp-12)))) 0.0 1.0)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(let ((gp-13 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-13) (seconds 0.38))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-14 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-14) (seconds 2))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-15 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-15) (seconds 0.25))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-16 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-16) (seconds 0.25))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-17 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-17) (seconds 2))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-18 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-18) (seconds 0.25))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-19 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-19) (seconds 0.25))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-20 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-20) (seconds 2))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-21 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-21) (seconds 0.25))
|
|
(suspend)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-22 (-> self clock frame-counter)))
|
|
(until (>= (- (-> self clock frame-counter) gp-22) (seconds 3))
|
|
(suspend)
|
|
)
|
|
)
|
|
(demo-screen-change (the-as symbol -1) -1 #f (the-as int #t))
|
|
(set! (-> *game-info* demo-state) (the-as uint 1))
|
|
(start 'play (get-continue-by-name *game-info* "demo-start"))
|
|
(sleep-code)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> self want 0) 5)
|
|
(set! (-> self want 1) 6)
|
|
(remove-setting! 'allow-timeout)
|
|
(set! (-> *setting-control* user-default allow-timeout) #t)
|
|
(let ((gp-24 (demo-menu)))
|
|
(eval!
|
|
(new 'stack 'script-context (the-as basic (process->ppointer self)) self (the-as vector #f))
|
|
'(fadeout (seconds (new 'static 'bfloat :data 0.3)))
|
|
)
|
|
(let ((s5-8 (-> self clock frame-counter)))
|
|
(while (or (!= (-> *setting-control* user-current bg-a) (-> *setting-control* user-target bg-a))
|
|
(< (- (-> self clock frame-counter) s5-8) (seconds 0.3))
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
(set-blackout-frames (seconds 0.5))
|
|
(send-event (ppointer->process (-> *setting-control* user-current movie)) 'abort)
|
|
(while (-> *setting-control* user-current movie)
|
|
(suspend)
|
|
)
|
|
(cond
|
|
((zero? gp-24)
|
|
(let ((gp-25 (-> self mask)))
|
|
(logior! (-> self mask) (process-mask no-kill))
|
|
(play-task (game-task atoll-sig) 'debug #f)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'hour 8)
|
|
(set! (-> self mask) gp-25)
|
|
)
|
|
(set-setting! 'allow-pause #t 0 0)
|
|
(let ((gp-27
|
|
(ppointer->handle (process-spawn scene-player :init scene-player-init "atoll-2-intro-demo" #t "hiphog-demo"))
|
|
)
|
|
)
|
|
(while (handle->process (the-as handle gp-27))
|
|
(suspend)
|
|
)
|
|
)
|
|
(set-setting! 'allow-timeout #f 0 0)
|
|
(set-setting! 'allow-pause #f 0 0)
|
|
(let ((t9-49 demo-screen-change)
|
|
(a0-81 0)
|
|
(a1-39 -1)
|
|
(a2-30 #t)
|
|
)
|
|
(t9-49 (the-as symbol a0-81) a1-39 a2-30 (the-as int #t))
|
|
(demo-wait-for-press (seconds 1) (seconds 15) a2-30)
|
|
)
|
|
(demo-screen-change (the-as symbol -1) -1 #f (the-as int #t))
|
|
(start 'play (get-continue-by-name *game-info* "atoll-start"))
|
|
)
|
|
((= gp-24 1)
|
|
(let ((gp-29 (-> self mask)))
|
|
(logior! (-> self mask) (process-mask no-kill))
|
|
(play-task (game-task strip-rescue) 'debug #f)
|
|
(set! (-> self mask) gp-29)
|
|
)
|
|
(set-setting! 'allow-pause #t 0 0)
|
|
(let ((gp-31
|
|
(ppointer->handle (process-spawn scene-player :init scene-player-init "crane-intro-demo" #t "vinroom-demo"))
|
|
)
|
|
)
|
|
(while (handle->process (the-as handle gp-31))
|
|
(suspend)
|
|
)
|
|
)
|
|
(let ((gp-32 (-> self mask)))
|
|
(logior! (-> self mask) (process-mask no-kill))
|
|
(play-task (game-task strip-rescue) 'debug #f)
|
|
(set! (-> *game-info* gun-type) 1)
|
|
(logior! (-> *game-info* debug-features) (game-feature board))
|
|
(logior! (-> *game-info* features) (game-feature board))
|
|
(send-event (ppointer->process *time-of-day*) 'change 'hour 8)
|
|
(set! (-> self mask) gp-32)
|
|
)
|
|
(set-setting! 'allow-timeout #f 0 0)
|
|
(set-setting! 'allow-pause #f 0 0)
|
|
(let ((t9-63 demo-screen-change)
|
|
(a0-105 1)
|
|
(a1-54 -1)
|
|
(a2-42 #t)
|
|
)
|
|
(t9-63 (the-as symbol a0-105) a1-54 a2-42 (the-as int #t))
|
|
(demo-wait-for-press (seconds 1) (seconds 15) a2-42)
|
|
)
|
|
(demo-screen-change (the-as symbol -1) -1 #f (the-as int #t))
|
|
(start 'play (get-continue-by-name *game-info* "strip-warp"))
|
|
)
|
|
((= gp-24 2)
|
|
(set-setting! 'allow-timeout #f 0 0)
|
|
(set-setting! 'allow-pause #f 0 0)
|
|
(demo-screen-change (the-as symbol -1) -1 #f (the-as int #t))
|
|
(set! (-> *setting-control* user-default music-volume) 0.0)
|
|
(case *kernel-boot-message*
|
|
(('demo-shared)
|
|
(set! *master-exit* 'force)
|
|
)
|
|
(else
|
|
(set! *master-exit* 'movie)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(sleep-code)
|
|
(none)
|
|
)
|
|
:post (behavior ()
|
|
(local-vars (v1-70 external-art-buffer))
|
|
(let ((gp-0 (the-as process-drawable (command-get-process "jak-demo-logo" (the-as process #f)))))
|
|
(when (and gp-0 (nonzero? (-> gp-0 draw)))
|
|
(let ((s5-0 (lookup-light-sphere-by-name "big-demo1" (-> self level bsp light-hash)))
|
|
(v1-6 (lookup-light-sphere-by-name "big-demo2" (-> self level bsp light-hash)))
|
|
)
|
|
(if s5-0
|
|
(set! (-> s5-0 brightness) (-> gp-0 draw color-mult x))
|
|
)
|
|
(if v1-6
|
|
(set! (-> v1-6 brightness) (-> gp-0 draw color-mult x))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-1 (lookup-light-sphere-by-name "small-demo" (-> self level bsp light-hash))))
|
|
(when gp-1
|
|
(if (>= (- (-> *display* base-clock frame-counter) (-> self spark-time)) (seconds 0.125))
|
|
(set! (-> gp-1 brightness) 0.0)
|
|
(set! (-> gp-1 brightness) (rand-vu-float-range 0.5 2.0))
|
|
)
|
|
)
|
|
)
|
|
(dotimes (v1-16 2)
|
|
(set! (-> self buffer v1-16 frame-lock) #f)
|
|
(set! (-> self have v1-16) -1)
|
|
)
|
|
(dotimes (gp-2 2)
|
|
(let ((s5-1 (-> self want gp-2)))
|
|
(when (>= s5-1 0)
|
|
(dotimes (s4-0 2)
|
|
(case (file-status (-> self buffer s4-0) "demo-screen" s5-1)
|
|
(('locked 'active)
|
|
(set! (-> self buffer s4-0 frame-lock) #t)
|
|
(set! (-> self have gp-2) s4-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(dotimes (gp-3 2)
|
|
(let ((a2-1 (-> self want gp-3)))
|
|
(when (and (>= a2-1 0) (< (-> self have gp-3) 0))
|
|
(dotimes (v1-42 2)
|
|
(when (not (-> self buffer v1-42 frame-lock))
|
|
(set-pending-file (-> self buffer v1-42) "demo-screen" a2-1 (process->handle self) -1.0)
|
|
(goto cfg-45)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(label cfg-45)
|
|
)
|
|
(dotimes (gp-4 2)
|
|
(update (-> self buffer gp-4))
|
|
)
|
|
(set! (-> self active) #f)
|
|
(when (>= (-> self draw) 0)
|
|
(dotimes (gp-5 2)
|
|
(when (file-status (-> self buffer gp-5) "demo-screen" (-> self draw))
|
|
(set! v1-70 (-> self buffer gp-5))
|
|
(goto cfg-58)
|
|
)
|
|
)
|
|
(set! v1-70 (the-as external-art-buffer #f))
|
|
(label cfg-58)
|
|
(when (and v1-70 (-> v1-70 art-group))
|
|
(draw-raw-image (bucket-id debug-no-zbuf1) (-> v1-70 art-group) 512 416 (-> self level) 8)
|
|
(set! (-> self active) #t)
|
|
)
|
|
)
|
|
(when (nonzero? (-> self sprite-draw))
|
|
(set! (-> self sprites 0 pos x) (the int (-> self sprite-pos x)))
|
|
(set! (-> self sprites 0 pos y) (the int (-> self sprite-pos y)))
|
|
(set! (-> self sprites 1 pos quad) (-> self sprites 0 pos quad))
|
|
(case (-> self sprite-draw)
|
|
((1)
|
|
(set! (-> self sprites 0 scale-y) 1.0)
|
|
(set! (-> self sprites 0 tex) (lookup-texture-by-id (new 'static 'texture-id :page #x74c)))
|
|
(set! (-> self sprites 1 tex) (lookup-texture-by-id (new 'static 'texture-id :index #x1 :page #x74c)))
|
|
(+! (-> self sprites 0 pos y) -256)
|
|
)
|
|
((2)
|
|
(set! (-> self sprites 0 scale-y) 2.0)
|
|
(set! (-> self sprites 0 tex) (lookup-texture-by-id (new 'static 'texture-id :index #x2 :page #x74c)))
|
|
(set! (-> self sprites 1 tex) #f)
|
|
)
|
|
((3)
|
|
(set! (-> self sprites 0 scale-y) 1.0)
|
|
(set! (-> self sprites 0 tex) (lookup-texture-by-id (new 'static 'texture-id :index #x3 :page #x74c)))
|
|
(set! (-> self sprites 1 tex) #f)
|
|
)
|
|
)
|
|
(let* ((s5-2 (-> *display* frames (-> *display* on-screen) global-buf))
|
|
(gp-6 (-> s5-2 base))
|
|
)
|
|
(dotimes (s4-1 2)
|
|
(if (and (-> self sprites s4-1 tex) (!= (-> self sprites s4-1 scale-x) 0.0))
|
|
(draw (-> self sprites s4-1) s5-2 (-> self level))
|
|
)
|
|
)
|
|
(let ((a3-6 (-> s5-2 base)))
|
|
(let ((v1-102 (the-as object (-> s5-2 base))))
|
|
(set! (-> (the-as dma-packet v1-102) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
|
|
(set! (-> (the-as dma-packet v1-102) vif0) (new 'static 'vif-tag))
|
|
(set! (-> (the-as dma-packet v1-102) vif1) (new 'static 'vif-tag))
|
|
(set! (-> s5-2 base) (&+ (the-as pointer v1-102) 16))
|
|
)
|
|
(dma-bucket-insert-tag
|
|
(-> *display* frames (-> *display* on-screen) bucket-group)
|
|
(bucket-id progress)
|
|
gp-6
|
|
(the-as (pointer dma-tag) a3-6)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defbehavior demo-control-init demo-control ()
|
|
(stack-size-set! (-> self main-thread) 2048)
|
|
(logclear! (-> self mask) (process-mask freeze pause menu progress actor-pause))
|
|
(set! (-> self level) (level-get *level* 'demo))
|
|
(let ((a1-2 (if (and (nonzero? (-> self level entity)) (> (-> self level entity length) 0))
|
|
(-> self level entity data 0 entity)
|
|
)
|
|
)
|
|
)
|
|
(process-entity-set! self (the-as entity-actor a1-2))
|
|
)
|
|
(set-setting! 'allow-pause #f 0 0)
|
|
(set-setting! 'allow-progress #f 0 0)
|
|
(set-setting! 'airlock #f 0 0)
|
|
(set-setting! 'music #f 0 0)
|
|
(set-setting! 'allow-timeout #f 0 0)
|
|
(apply-settings *setting-control*)
|
|
(dotimes (gp-0 2)
|
|
(set! (-> self buffer gp-0)
|
|
(new
|
|
'process
|
|
'external-art-buffer
|
|
gp-0
|
|
(lambda ((arg0 external-art-buffer))
|
|
(let ((gp-0 (level-get *level* 'demo)))
|
|
(cond
|
|
((not (-> gp-0 user-object (-> arg0 index)))
|
|
(let ((s4-0 (-> arg0 heap)))
|
|
(set! (-> s4-0 base) (kmalloc (-> gp-0 heap) #xd0000 (kmalloc-flags) "heap"))
|
|
(set! (-> s4-0 current) (-> s4-0 base))
|
|
(set! (-> s4-0 top-base) (&+ (-> s4-0 base) #xd0000))
|
|
(set! (-> s4-0 top) (-> s4-0 top-base))
|
|
)
|
|
(set! (-> gp-0 user-object (-> arg0 index)) (the-as basic (-> arg0 heap base)))
|
|
)
|
|
(else
|
|
(let ((v1-10 (-> arg0 heap)))
|
|
(set! (-> v1-10 base) (the-as pointer (-> gp-0 user-object (-> arg0 index))))
|
|
(set! (-> v1-10 current) (-> v1-10 base))
|
|
(set! (-> v1-10 top-base) (&+ (-> v1-10 base) #xd0000))
|
|
(set! (-> v1-10 top) (-> v1-10 top-base))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
(set! (-> self selected) 0)
|
|
(dotimes (v1-32 2)
|
|
(set! (-> self want v1-32) -1)
|
|
(set! (-> self have v1-32) -1)
|
|
)
|
|
(set! (-> self draw) -1)
|
|
(set! (-> self active) #f)
|
|
(dotimes (v1-36 2)
|
|
(let ((a0-14 (&+ (-> self sprites 0 color2) (* v1-36 64))))
|
|
(set! (-> a0-14 0) 128)
|
|
(set! (-> a0-14 1) 128)
|
|
(set! (-> a0-14 2) 128)
|
|
(set! (-> a0-14 3) 128)
|
|
)
|
|
(set! (-> self sprites v1-36 pos z) #xffffff)
|
|
(set! (-> self sprites v1-36 pos w) 0)
|
|
(set! (-> self sprites v1-36 scale-x) 1.0)
|
|
(set! (-> self sprites v1-36 scale-y) 1.0)
|
|
(set! (-> self sprites v1-36 angle) 0.0)
|
|
(set! (-> self sprites v1-36 flags) (the-as uint 0))
|
|
(set! (-> self sprites v1-36 tex) #f)
|
|
)
|
|
(set! (-> self sprite-draw) (the-as uint 0))
|
|
(set! *demo-control* (the-as (pointer demo-control) (process->ppointer self)))
|
|
(set! (-> *game-info* controller 0) (process->handle self))
|
|
(go-virtual idle)
|
|
(none)
|
|
)
|
|
|
|
(defstate target-demo (target)
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(case event-type
|
|
(('change-mode)
|
|
(case (-> event param 0)
|
|
(('grab)
|
|
(if (not (-> event param 1))
|
|
#t
|
|
(go target-grab 'stance)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(target-generic-event-handler proc arg1 event-type event)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ((arg0 symbol))
|
|
(let ((a0-1 (-> *hud-engine* alive-list next0)))
|
|
*hud-engine*
|
|
(let ((s5-0 (-> a0-1 next0)))
|
|
(while (!= a0-1 (-> *hud-engine* alive-list-end))
|
|
(deactivate ((method-of-type connection get-process) (the-as connection a0-1)))
|
|
(set! a0-1 s5-0)
|
|
*hud-engine*
|
|
(set! s5-0 (-> s5-0 next0))
|
|
)
|
|
)
|
|
)
|
|
(ja-channel-set! 0)
|
|
(when arg0
|
|
(send-event (ppointer->process (-> *setting-control* user-current movie)) 'abort)
|
|
(kill-by-type demo-control *active-pool*)
|
|
(set! (-> self game controller 0)
|
|
(ppointer->handle (process-spawn demo-control :init demo-control-init :to *entity-pool*))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
:code (the-as (function symbol none :behavior target) sleep-code)
|
|
:post target-no-move-post
|
|
)
|
|
|
|
(defpartgroup group-demo-sign-naughtydog
|
|
:id 1290
|
|
:flags (unk-4 unk-6)
|
|
:bounds (static-bspherem 0 0 0 8)
|
|
:rotate ((degrees 0) (degrees 4) (degrees 0))
|
|
:parts ((sp-item 5474 :flags (is-3d launch-asap bit7))
|
|
(sp-item 5475 :flags (is-3d launch-asap bit7))
|
|
(sp-item 5476 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000)
|
|
)
|
|
)
|
|
|
|
(defpart 5476
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters 1))
|
|
(sp-rnd-flt spt-scale-x (meters 32) (meters 0.1) 1.0)
|
|
(sp-flt spt-rot-x 2048.0)
|
|
(sp-rnd-flt spt-scale-y (meters 48) (meters 0.1) 1.0)
|
|
(sp-flt spt-r 255.0)
|
|
(sp-flt spt-g 255.0)
|
|
(sp-flt spt-b 255.0)
|
|
(sp-rnd-flt spt-a 10.0 2.0 1.0)
|
|
(sp-flt spt-omega 822476.8)
|
|
(sp-int spt-timer 5)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-3 glow)
|
|
(sp-flt spt-userdata 2048.0)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpart 5474
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters 0.1))
|
|
(sp-flt spt-scale-x (meters 16))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 0.0))
|
|
(sp-flt spt-scale-y (meters 8))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400300 -2139062144 0 1 #x75400300 #x60606060 #x202020 1)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpart 5475
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x3 :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters -0.1))
|
|
(sp-flt spt-scale-x (meters 16))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 180.0))
|
|
(sp-flt spt-scale-y (meters 8))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400300 -2139062144 0 1 #x75400300 -2141167520 #x202020 0)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-demo-sign-big-praxis
|
|
:id 1291
|
|
:flags (unk-4 unk-6)
|
|
:bounds (static-bspherem 0 0 0 8)
|
|
:rotate ((degrees 0) (degrees 4) (degrees 0))
|
|
:parts ((sp-item 5477 :flags (is-3d launch-asap bit7))
|
|
(sp-item 5478 :flags (is-3d launch-asap bit7))
|
|
(sp-item 5479 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000)
|
|
)
|
|
)
|
|
|
|
(defpart 5479
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters 1))
|
|
(sp-rnd-flt spt-scale-x (meters 48) (meters 0.1) 1.0)
|
|
(sp-flt spt-rot-x 2048.0)
|
|
(sp-rnd-flt spt-scale-y (meters 32) (meters 0.1) 1.0)
|
|
(sp-flt spt-r 255.0)
|
|
(sp-flt spt-g 255.0)
|
|
(sp-flt spt-b 255.0)
|
|
(sp-rnd-flt spt-a 10.0 2.0 1.0)
|
|
(sp-flt spt-omega 822476.8)
|
|
(sp-int spt-timer 5)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
|
(sp-flt spt-userdata 2048.0)
|
|
)
|
|
)
|
|
|
|
(defpart 5477
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters 0.05))
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 0.0))
|
|
(sp-flt spt-scale-y (meters 16))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400000 -2139062144 0 1 #x75400000 -2141167520 #x202020 0)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpart 5478
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters -0.05))
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 180.0))
|
|
(sp-flt spt-scale-y (meters 16))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400000 -2139062144 0 1 #x75400000 -2141167520 #x202020 0)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-demo-sign-wanted
|
|
:id 1292
|
|
:flags (unk-4 unk-6)
|
|
:bounds (static-bspherem 0 0 0 4)
|
|
:rotate ((degrees 0) (degrees 4) (degrees 0))
|
|
:parts ((sp-item 5480 :flags (is-3d launch-asap bit7))
|
|
(sp-item 5481 :flags (is-3d launch-asap bit7))
|
|
(sp-item 5482 :fade-after (meters 200) :flags (bit6) :hour-mask #b111111111110000000)
|
|
)
|
|
)
|
|
|
|
(defpart 5482
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xca :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters 1))
|
|
(sp-rnd-flt spt-scale-x (meters 32) (meters 0.1) 1.0)
|
|
(sp-flt spt-rot-x 2048.0)
|
|
(sp-rnd-flt spt-scale-y (meters 32) (meters 0.1) 1.0)
|
|
(sp-flt spt-r 255.0)
|
|
(sp-flt spt-g 255.0)
|
|
(sp-flt spt-b 255.0)
|
|
(sp-rnd-flt spt-a 10.0 2.0 1.0)
|
|
(sp-flt spt-omega 822476.8)
|
|
(sp-int spt-timer 5)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
|
(sp-flt spt-userdata 2048.0)
|
|
)
|
|
)
|
|
|
|
(defpart 5480
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters 0.05))
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 0.0))
|
|
(sp-flt spt-scale-y (meters 8))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400200 -2139062144 0 1 #x75400200 -2141167520 #x202020 0)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpart 5481
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters -0.05))
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 180.0))
|
|
(sp-flt spt-scale-y (meters 8))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400200 -2139062144 0 1 #x75400200 -2141167520 #x202020 0)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-demo-sign-scea
|
|
:id 1293
|
|
:flags (unk-4 unk-6)
|
|
:bounds (static-bspherem 0 0 0 4)
|
|
:rotate ((degrees 0) (degrees 4) (degrees 0))
|
|
:parts ((sp-item 5483 :flags (is-3d launch-asap bit7)) (sp-item 5484 :flags (is-3d launch-asap bit7)))
|
|
)
|
|
|
|
(defpart 5483
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters 0.05))
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 0.0))
|
|
(sp-flt spt-scale-y (meters 8))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400100 -2139062144 0 1 #x75400100 -2141167520 #x202020 0)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(defpart 5484
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x754))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-z (meters -0.05))
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-flt spt-rot-x 16384.0)
|
|
(sp-flt spt-rot-z (degrees 180.0))
|
|
(sp-flt spt-scale-y (meters 8))
|
|
(sp-flt spt-r 128.0)
|
|
(sp-flt spt-g 128.0)
|
|
(sp-flt spt-b 128.0)
|
|
(sp-flt spt-a 128.0)
|
|
(sp-int spt-timer -1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-12)
|
|
(new 'static 'sp-field-init-spec
|
|
:field (sp-field-id spt-userdata)
|
|
:flags (sp-flag plain-v2)
|
|
:object (new 'static 'boxed-array :type int32 5 0 0 #x75400100 -2139062144 0 1 #x75400100 -2141167520 #x202020 0)
|
|
)
|
|
(sp-func spt-func 'sparticle-texture-day-night)
|
|
(sp-flt spt-rotate-y (degrees 0.0))
|
|
)
|
|
)
|
|
|
|
(when (= (scf-get-territory) 1)
|
|
(let ((v1-40 (get-field-spec-by-id (-> *part-id-table* 5483) (sp-field-id spt-userdata))))
|
|
(if v1-40
|
|
(set! (-> v1-40 initial-valuef)
|
|
(the-as
|
|
float
|
|
(new 'static 'boxed-array :type int32 5 0 0 #x75400400 -2139062144 0 1 #x75400400 -2141167520 #x202020 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((v1-43 (get-field-spec-by-id (-> *part-id-table* 5484) (sp-field-id spt-userdata))))
|
|
(if v1-43
|
|
(set! (-> v1-43 initial-valuef)
|
|
(the-as
|
|
float
|
|
(new 'static 'boxed-array :type int32 5 0 0 #x75400400 -2139062144 0 1 #x75400400 -2141167520 #x202020 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(when (= (scf-get-territory) 2)
|
|
(let ((v1-47 (get-field-spec-by-id (-> *part-id-table* 5483) (sp-field-id spt-userdata))))
|
|
(if v1-47
|
|
(set! (-> v1-47 initial-valuef)
|
|
(the-as
|
|
float
|
|
(new 'static 'boxed-array :type int32 5 0 0 #x75400500 -2139062144 0 1 #x75400500 -2141167520 #x202020 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((v1-50 (get-field-spec-by-id (-> *part-id-table* 5484) (sp-field-id spt-userdata))))
|
|
(if v1-50
|
|
(set! (-> v1-50 initial-valuef)
|
|
(the-as
|
|
float
|
|
(new 'static 'boxed-array :type int32 5 0 0 #x75400500 -2139062144 0 1 #x75400500 -2141167520 #x202020 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(when (= (scf-get-territory) 3)
|
|
(let ((v1-54 (get-field-spec-by-id (-> *part-id-table* 5483) (sp-field-id spt-userdata))))
|
|
(if v1-54
|
|
(set! (-> v1-54 initial-valuef)
|
|
(the-as
|
|
float
|
|
(new 'static 'boxed-array :type int32 5 0 0 #x75400600 -2139062144 0 1 #x75400600 -2141167520 #x202020 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((v1-57 (get-field-spec-by-id (-> *part-id-table* 5484) (sp-field-id spt-userdata))))
|
|
(if v1-57
|
|
(set! (-> v1-57 initial-valuef)
|
|
(the-as
|
|
float
|
|
(new 'static 'boxed-array :type int32 5 0 0 #x75400600 -2139062144 0 1 #x75400600 -2141167520 #x202020 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-demo-plug
|
|
:id 1294
|
|
:linger-duration (seconds 2)
|
|
:flags (use-local-clock)
|
|
:bounds (static-bspherem 0 0 0 2)
|
|
:parts ((sp-item 5485 :flags (bit6) :period 1500 :length 150)
|
|
(sp-item 5486 :flags (bit6) :period 1500 :length 150)
|
|
(sp-item 5487 :period 1500 :length 200)
|
|
(sp-item 5487 :period 1500 :length 100)
|
|
(sp-item 5487 :period 1500 :length 70)
|
|
(sp-item 5487 :period 1500 :length 45)
|
|
(sp-item 5487 :period 1500 :length 30)
|
|
(sp-item 5487 :period 1500 :length 25)
|
|
(sp-item 5487 :period 1500 :length 20)
|
|
(sp-item 5487 :period 1500 :length 15)
|
|
)
|
|
)
|
|
|
|
(defpart 5485
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 5) (meters 0.1) 1.0)
|
|
(sp-flt spt-rot-x 1638.4)
|
|
(sp-rnd-flt spt-rot-z (degrees -5.0) (degrees 10.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-flt spt-r 255.0)
|
|
(sp-flt spt-g 255.0)
|
|
(sp-rnd-flt spt-b 200.0 55.0 1.0)
|
|
(sp-rnd-flt spt-a 20.0 4.0 1.0)
|
|
(sp-flt spt-omega 411648.0)
|
|
(sp-int spt-timer 5)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
|
(sp-flt spt-userdata 6144.0)
|
|
)
|
|
)
|
|
|
|
(defpart 5486
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 32) (meters 0.1) 1.0)
|
|
(sp-flt spt-rot-x 1638.4)
|
|
(sp-rnd-flt spt-rot-z (degrees -2.0) (degrees 4.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-flt spt-r 255.0)
|
|
(sp-rnd-flt spt-g 255.0 255.0 1.0)
|
|
(sp-rnd-flt spt-b 200.0 55.0 1.0)
|
|
(sp-rnd-flt spt-a 8.0 4.0 1.0)
|
|
(sp-flt spt-omega 1231667.2)
|
|
(sp-int spt-timer 5)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow)
|
|
(sp-flt spt-userdata 6144.0)
|
|
)
|
|
)
|
|
|
|
(defpart 5487
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x92 :page #xc))
|
|
(sp-rnd-flt spt-num 1.0 1.0 1.0)
|
|
(sp-flt spt-scale-x (meters 1.5))
|
|
(sp-int spt-rot-x 4)
|
|
(sp-flt spt-scale-y (meters 0.05))
|
|
(sp-flt spt-r 255.0)
|
|
(sp-flt spt-g 255.0)
|
|
(sp-flt spt-b 255.0)
|
|
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
|
(sp-flt spt-omega 8.192)
|
|
(sp-rnd-flt spt-vel-y (meters 0.033333335) (meters 0.06666667) 1.0)
|
|
(sp-rnd-flt spt-fade-r -0.85 -0.85 1.0)
|
|
(sp-rnd-flt spt-fade-g -1.7 -1.7 1.0)
|
|
(sp-flt spt-fade-b -8.0)
|
|
(sp-rnd-flt spt-accel-y -6.826667 -2.7306666 1.0)
|
|
(sp-flt spt-friction 0.96)
|
|
(sp-int-plain-rnd spt-timer 300 1199 1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)
|
|
(sp-func spt-func 'sparticle-motion-blur)
|
|
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 3600.0) 1.0)
|
|
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 3600.0) 1.0)
|
|
)
|
|
)
|