jak-project/goal_src/jak1/levels/title/title-obs.gc

898 lines
31 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: title-obs.gc
;; name in dgo: title-obs
;; dgos: TIT
;; DECOMP BEGINS
(deftype logo (process-drawable)
((camera handle :offset-assert 176)
(camera-anim handle :offset-assert 184)
(volumes handle :offset-assert 192)
(black handle :offset-assert 200)
(target handle :offset-assert 208)
(sidekick handle :offset-assert 216)
(main-joint joint-mod :offset-assert 224)
(anim spool-anim :offset-assert 228)
(next-anim spool-anim :offset-assert 232)
(done? symbol :offset-assert 236)
)
:heap-base #x80
:method-count-assert 24
:size-assert #xf0
:flag-assert #x18008000f0
(:methods
(idle () _type_ :state 20)
(startup () _type_ :state 21)
(hidden () _type_ :state 22)
(ndi () _type_ :state 23)
)
)
(defmethod relocate logo ((obj logo) (arg0 int))
(if (nonzero? (-> obj main-joint))
(&+! (-> obj main-joint) arg0)
)
(the-as logo ((method-of-type process-drawable relocate) obj arg0))
)
(deftype logo-slave (process-drawable)
((parent-process (pointer logo) :offset 12)
(main-joint joint-mod :offset-assert 176)
)
:heap-base #x50
:method-count-assert 21
:size-assert #xb4
:flag-assert #x15005000b4
(:methods
(idle () _type_ :state 20)
)
)
(defmethod relocate logo-slave ((obj logo-slave) (arg0 int))
(if (nonzero? (-> obj main-joint))
(&+! (-> obj main-joint) arg0)
)
(the-as logo-slave ((method-of-type process-drawable relocate) obj arg0))
)
(defskelgroup *logo-sg* logo logo-english-lod0-jg logo-idle-ja
((logo-english-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 10)
)
(defskelgroup *logo-japan-sg* logo logo-japan-lod0-jg logo-idle-ja
((logo-japan-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5)
)
(defskelgroup *logo-volumes-sg* logo-volumes logo-volumes-english-lod0-jg logo-volumes-idle-ja
((logo-volumes-english-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5.5)
)
(defskelgroup *logo-volumes-japan-sg* logo-volumes logo-volumes-japan-lod0-jg logo-volumes-idle-ja
((logo-volumes-japan-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5.5)
)
(defskelgroup *logo-black-sg* logo-black logo-black-lod0-jg logo-black-idle-ja
((logo-black-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5.5)
)
(defskelgroup *logo-cam-sg* logo-cam logo-cam-lod0-jg logo-cam-idle-ja
((logo-cam-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5.5)
)
(defskelgroup *ndi-sg* ndi ndi-lod0-jg ndi-idle-ja
((ndi-lod0-mg (meters 999999)))
:bounds (static-spherem 0 10 0 30)
)
(defskelgroup *ndi-volumes-sg* ndi-volumes ndi-volumes-lod0-jg ndi-volumes-idle-ja
((ndi-volumes-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5.5)
)
(defskelgroup *ndi-cam-sg* ndi-cam ndi-cam-lod0-jg ndi-cam-idle-ja
((ndi-cam-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 5.5)
)
(defstate idle (logo-slave)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(local-vars (v0-0 uint))
(the-as object (case event-type
(('blend-shape)
(cond
((-> event param 0)
(set! v0-0 (the-as uint (logior (-> self skel status) (janim-status blerc eye))))
(set! (-> self skel status) (the-as janim-status v0-0))
)
(else
(set! v0-0 (the-as uint (logclear (-> self skel status) (janim-status blerc eye))))
(set! (-> self skel status) (the-as janim-status v0-0))
)
)
v0-0
)
(('origin-joint-index)
(set! v0-0 (-> event param 0))
(set! (-> self draw origin-joint-index) v0-0)
v0-0
)
)
)
)
:code (behavior ()
(ja-post)
(loop
(clone-anim-once
(ppointer->handle (-> self parent-process))
(the-as int (-> self draw origin-joint-index))
#t
""
)
(if (nonzero? (-> self main-joint))
(set-trs!
(-> self main-joint)
(-> self parent-process 0 main-joint trans)
(the-as quaternion #f)
(-> self parent-process 0 main-joint scale)
)
)
(suspend)
)
(none)
)
)
(defbehavior logo-slave-init-by-other logo-slave ((arg0 entity-actor) (arg1 skeleton-group))
(set! (-> self entity) arg0)
(set! (-> self root) (new 'process 'trsqv))
(initialize-skeleton self arg1 '())
(logior! (-> self skel status) (janim-status inited))
(set! (-> self draw origin-joint-index) (the-as uint 3))
(set! (-> self draw shadow-mask) (the-as uint 255))
(set! (-> self draw global-effect) (draw-effect title))
(when (or (string= (-> self draw art-group name) "logo-volumes")
(string= (-> self draw art-group name) "logo-volumes-japan")
(string= (-> self draw art-group name) "logo-black")
)
(set! (-> self main-joint) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 3))
(set! (-> self main-joint max-dist) (the-as meters #t))
)
(set! (-> self event-hook) (-> (method-of-object self idle) event))
(go-virtual idle)
(none)
)
(defstate startup (logo)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(the-as object (case event-type
(('update)
(the-as symbol (remove-setting! 'process-mask))
)
)
)
)
:exit (behavior ()
(let ((a0-0 (-> self anim)))
(when (nonzero? a0-0)
(ja-abort-spooled-anim a0-0 (the-as art-joint-anim #f) -1)
(ja-channel-set! 0)
(ja-post)
(let ((a0-3 (handle->process (-> self camera))))
(if a0-3
(deactivate a0-3)
)
)
)
)
(none)
)
:trans (behavior ()
(if (not (none-reserved? *art-control*))
(go-virtual hidden)
)
(if (nonzero? (-> self next-anim))
(spool-push *art-control* (-> self next-anim name) 0 self -1.0)
)
(none)
)
:code (behavior ()
(while (!= (file-status *art-control* (-> self next-anim name) 0) 'active)
(set-blackout-frames (seconds 0.05))
(suspend)
)
(set! (-> *setting-control* current bg-a) 1.0)
(set-setting! 'bg-a 'abs 0.0 0)
(set! (-> self camera-anim)
(ppointer->handle (process-spawn logo-slave (-> self entity) *logo-cam-sg* :to self))
)
(set! (-> self camera)
(ppointer->handle
(process-spawn
othercam
(handle->process (-> self camera-anim))
4
#t
'logo
:to (handle->process (-> self camera-anim))
)
)
)
(send-event (handle->process (-> self camera)) 'mask 0)
;; check language instead of territory here
(#if PC_PORT
(if (= (-> *setting-control* default language) (language-enum japanese))
(set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self)))
(set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self)))
)
(case (scf-get-territory)
((GAME_TERRITORY_SCEI)
(set! (-> self volumes)
(ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self))
)
)
(else
(set! (-> self volumes)
(ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self))
)
)
)
)
(send-event (handle->process (-> self volumes)) 'origin-joint-index 3)
(set! (-> self black) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-black-sg* :to self)))
(send-event (handle->process (-> self black)) 'origin-joint-index 3)
(set! (-> self anim) (-> self next-anim))
(set! (-> self next-anim)
(new 'static 'spool-anim
:name "logo-intro-2"
:index 7
:parts 15
:command-list '((260 want-force-inside village1 #t)
(261 kill "sage-23")
(261 kill "assistant-11")
(261 kill "explorer-4")
((new 'static 'bfloat :data 261.5) kill "farmer-3")
((new 'static 'bfloat :data 261.5) kill "oracle-1")
((new 'static 'bfloat :data 261.5) kill "warp-gate-switch-3")
(262 kill "sharkey-12")
(262 kill "fishermans-boat-2")
(262 kill "evilplant-2")
((new 'static 'bfloat :data 262.5) kill "revcycle-8")
((new 'static 'bfloat :data 262.5) kill "revcycleprop-2")
((new 'static 'bfloat :data 262.5) kill "water-vol-8")
(263 kill "water-vol-9")
(263 kill "water-vol-10")
(263 kill "reflector-middle-2")
(400 want-force-inside village1 #f)
(400 display-level village1 display)
(400 save)
(500 set! *spawn-actors* #t)
)
)
)
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
)
(set! *spawn-actors* #f)
(add-setting! 'process-mask 'set 0.0 (process-mask progress))
(apply-settings *setting-control*)
(deactivate (handle->process (-> self black)))
(deactivate (handle->process (-> self volumes)))
(send-event (ppointer->process (-> self parent)) 'wait)
(send-event self 'update)
(ja-channel-set! 1)
;; og:preserve-this PAL patch here
(ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(logior! (-> self skel status) (janim-status spool))
(suspend)
(if (not (paused?))
(ja :num! (seek!))
)
)
(set! (-> self anim) (-> self next-anim))
(set! (-> self next-anim)
(new 'static 'spool-anim
:name "logo-loop"
:index 9
:parts 17
:command-list '((61 kill "sage-23")
(61 kill "assistant-11")
(61 kill "explorer-4")
((new 'static 'bfloat :data 61.5) kill "farmer-3")
((new 'static 'bfloat :data 61.5) kill "oracle-1")
((new 'static 'bfloat :data 61.5) kill "warp-gate-switch-3")
(62 kill "sharkey-12")
(62 kill "fishermans-boat-2")
(62 kill "evilplant-2")
((new 'static 'bfloat :data 62.5) kill "revcycle-8")
((new 'static 'bfloat :data 62.5) kill "revcycleprop-2")
((new 'static 'bfloat :data 62.5) kill "water-vol-8")
(63 kill "water-vol-9")
(63 kill "water-vol-10")
(63 kill "reflector-middle-2")
)
)
)
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
)
(remove-exit)
(go-virtual idle)
(none)
)
:post (behavior ()
(if *progress-process*
(logior! (-> self draw status) (draw-status skip-bones))
(logclear! (-> self draw status) (draw-status skip-bones))
)
(let ((a3-0 (new-stack-vector0))
(a1-0 (new-stack-vector0))
)
(let ((f0-0 (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9)
0.87
1.0
)
)
)
(set-vector! a3-0 f0-0 f0-0 1.0 1.0)
)
(set-vector!
a1-0
(if (= (-> *setting-control* current aspect-ratio) 'aspect16x9)
2048.0
0.0
)
(if (= (-> *setting-control* current aspect-ratio) 'aspect16x9)
-1228.8
0.0
)
0.0
1.0
)
(set-trs! (-> self main-joint) a1-0 (the-as quaternion #f) a3-0)
)
(ja-post)
(none)
)
)
(defstate idle (logo)
:virtual #t
:exit (-> (method-of-type logo startup) exit)
:trans (-> (method-of-type logo startup) trans)
:code (behavior ()
(loop
(set! (-> self anim) (-> self next-anim))
(if (not (handle->process (-> self camera)))
(set! (-> self camera)
(ppointer->handle
(process-spawn
othercam
(handle->process (-> self camera-anim))
4
#t
'logo
:to (handle->process (-> self camera-anim))
)
)
)
)
(set! *spawn-actors* #f)
(ja-channel-set! 1)
;; og:preserve-this PAL patch here
(ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(logior! (-> self skel status) (janim-status spool))
(suspend)
(if (not (paused?))
(ja :num! (seek!))
)
)
(set! *spawn-actors* #t)
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
)
)
(none)
)
:post (-> (method-of-type logo startup) post)
)
(defstate hidden (logo)
:virtual #t
:trans (behavior ()
(if (nonzero? (-> self next-anim))
(spool-push *art-control* (-> self next-anim name) 0 self -1.0)
)
(none)
)
:code (behavior ()
(ja-channel-set! 0)
(ja-post)
(let ((gp-0 *master-mode*))
(set! *master-mode* 'game)
(clear-rec *art-control*)
(set! *master-mode* gp-0)
)
(loop
(when (and (none-reserved? *art-control*) (not (paused?)))
(let ((gp-1 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) gp-1) (seconds 0.1))
(set! *camera-look-through-other* 2)
(suspend)
)
)
(go-virtual idle)
)
(set! *camera-look-through-other* 2)
(suspend)
)
(none)
)
)
(defstate ndi (logo)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(the-as object (case event-type
(('blackout)
(the-as symbol (set-setting! 'bg-a 'abs 1.0 0))
)
)
)
)
:enter (behavior ()
(set-setting! 'bg-a 'abs 0.0 0)
(apply-settings *setting-control*)
(set! (-> self state-time) (-> *display* base-frame-counter))
(if *time-of-day-proc*
(set! (-> *time-of-day-proc* 0 hour) 12)
)
(set! (-> self done?) #f)
(none)
)
:exit (behavior ()
((-> (method-of-type logo startup) exit))
(set-blackout-frames (seconds 0.035))
(none)
)
:trans (behavior ()
((-> (method-of-type logo startup) trans))
(if (and (or *debug-segment* PC_PORT)
(cpad-pressed? 0 start circle x)
(member (level-status *level* 'village1) '(loaded active))
)
(set-setting! 'bg-a 'abs 1.0 0)
)
(when (and (= (-> *setting-control* current bg-a) 1.0)
(and (member (level-status *level* 'village1) '(active loaded))
;; i think we can forgo the time check here...
(#if PC_PORT #t (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 3)))
(let ((gp-2 (level-get *level* 'village1)))
(when gp-2
(load-state-want-levels 'title 'village1)
(load-state-want-display-level 'village1 'display-self)
(load-state-want-vis 'vi1)
(set-force-inside! *load-state* 'village1 #t)
(!= (-> gp-2 all-visible?) 'loading)
)
)
)
)
(load-state-want-display-level 'village1 'special)
(if (not (-> self done?))
(ja-abort-spooled-anim (-> self anim) (the-as art-joint-anim #f) -1)
)
(set! (-> self done?) #t)
(deactivate self)
)
(if *time-of-day-proc*
(set! (-> *time-of-day-proc* 0 hour) 12)
)
(none)
)
:code (behavior ()
(while (!= (file-status *art-control* (-> self next-anim name) 0) 'active)
(set-blackout-frames (seconds 0.05))
(suspend)
)
(set! (-> *setting-control* current bg-a) 1.0)
(set! (-> self camera-anim)
(ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-cam-sg* :to self))
)
(set! (-> self camera)
(ppointer->handle
(process-spawn
othercam
(handle->process (-> self camera-anim))
3
#t
'logo
:to (handle->process (-> self camera-anim))
)
)
)
(send-event (handle->process (-> self camera)) 'mask 0)
(set! (-> self volumes)
(ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-volumes-sg* :to self))
)
(send-event (handle->process (-> self volumes)) 'origin-joint-index 3)
(set! (-> self target) (ppointer->handle (process-spawn logo-slave #f *jchar-sg* :to self)))
(send-event (handle->process (-> self target)) 'blend-shape #t)
(send-event (handle->process (-> self target)) 'origin-joint-index 33)
(set! (-> self sidekick) (ppointer->handle (process-spawn logo-slave #f *sidekick-sg* :to self)))
(send-event (handle->process (-> self sidekick)) 'blend-shape #t)
(send-event (handle->process (-> self sidekick)) 'origin-joint-index 6)
(set! (-> self anim) (-> self next-anim))
(set! (-> self next-anim) (new 'static 'spool-anim :name "logo-intro" :index 5 :parts 3 :command-list '()))
(#cond
(PC_PORT
(cond
(*quit-to-title*
(set! *quit-to-title* #f))
(else
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
))
))
(#t
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
)
))
(set! (-> self done?) #t)
(set-setting! 'bg-a 'abs 1.0 0)
(anim-loop)
(none)
)
:post (behavior ()
(ja-post)
(none)
)
)
(defbehavior logo-init-by-other logo ((arg0 entity-actor) (arg1 vector) (arg2 symbol))
(stack-size-set! (-> self main-thread) 512)
(logclear! (-> self mask) (process-mask progress))
(set! (-> self entity) arg0)
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg1 quad))
(case arg2
(('logo)
(set! (-> *time-of-day-context* title-light-group dir1 levels x) 0.0)
(set! (-> *time-of-day-context* title-light-group ambi levels x) 0.444)
;; check language instead of territory here
(#if PC_PORT
(if (= (-> *setting-control* default language) (language-enum japanese))
(initialize-skeleton self *logo-japan-sg* '())
(initialize-skeleton self *logo-sg* '())
)
(case (scf-get-territory)
((GAME_TERRITORY_SCEI)
(initialize-skeleton self *logo-japan-sg* '())
)
(else
(initialize-skeleton self *logo-sg* '())
)
)
)
(set! (-> self main-joint) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 3))
(set! (-> self main-joint max-dist) (the-as meters #t))
(set! (-> self next-anim) (new 'static 'spool-anim
:name "logo-intro"
:index 5
:parts 3
:command-list '((0 want-levels title village1)
(5 display-level village1 special)
(5 want-vis vi1)
(5 want-force-inside village1 #t)
(115 display-level village1 display-self)
(115 save)
(115 kill "sage-23")
(115 kill "assistant-11")
(115 kill "explorer-4")
(115 kill "farmer-3")
(115 kill "oracle-1")
(115 kill "warp-gate-switch-3")
(115 kill "sharkey-12")
(115 kill "fishermans-boat-2")
(115 kill "evilplant-2")
(115 kill "revcycle-8")
(115 kill "revcycleprop-2")
(115 kill "water-vol-8")
(115 kill "water-vol-9")
(115 kill "water-vol-10")
(115 kill "reflector-middle-2")
)
)
)
(set! (-> self draw origin-joint-index) (the-as uint 3))
)
(('ndi)
(set! (-> *time-of-day-context* title-light-group dir1 levels x) 1.0)
(set! (-> *time-of-day-context* title-light-group ambi levels x) 1.0)
(initialize-skeleton self *ndi-sg* '())
(set! (-> self draw origin-joint-index) (the-as uint 3))
(set! (-> self next-anim)
(new 'static 'spool-anim :name "ndi-intro" :index 3 :parts 4 :command-list '((0 want-levels title village1)
(5 want-vis vi1)
(5 want-force-inside village1 #t)
(6 save)
(453 send-event self blackout)
)
)
)
)
)
(logior! (-> self skel status) (janim-status inited))
(set! (-> self draw global-effect) (draw-effect title))
(set! (-> self draw shadow-mask) (the-as uint 255))
(set! (-> self camera) (the-as handle #f))
(set! (-> self volumes) (the-as handle #f))
(set! (-> self black) (the-as handle #f))
(cond
((= arg2 'logo)
(go-virtual startup)
)
((= arg2 'ndi)
(go-virtual ndi)
)
)
(none)
)
(defstate target-title (target)
:event target-generic-event-handler
:enter (behavior ()
(set-setting! 'music-volume 'abs 0.0 0)
(set-setting! 'sfx-volume 'abs 0.0 0)
(set-setting! 'ambient-volume 'abs 0.0 0)
(set-setting! 'allow-pause #f 0.0 0)
(set-setting! 'allow-progress #f 0.0 0)
(set-setting! 'border-mode #f 0.0 0)
(apply-settings *setting-control*)
(set! (-> self state-time) (-> *display* base-frame-counter))
(set! (-> self manipy) (the-as (pointer manipy) #f))
(ja-channel-set! 0)
(ja-post)
(send-event *camera* 'change-state cam-fixed 0)
(none)
)
:exit (behavior ()
(when (not (or (= (-> self next-state name) 'target-title-play) (= (-> self next-state name) 'target-title-wait)))
(if (-> self manipy)
(deactivate (-> self manipy 0))
)
)
(none)
)
:trans (behavior ()
(hide-hud-quick)
(spool-push *art-control* "ndi-intro" 0 self -1.0)
;; og:preserve-this PAL patch here
(if *sound-player-enable*
(sound-group-pause (sound-group music))
)
(none)
)
:code (behavior ()
(let ((gp-0 (the-as handle #f)))
;; og:preserve-this PAL patch here
(cond
((and (= (scf-get-territory) GAME_TERRITORY_SCEI) *first-boot*)
(set! *first-boot* #f)
(set! gp-0 (ppointer->handle (static-screen-spawn
5
(new 'static 'texture-id :page #x649)
(new 'static 'texture-id :index #x1 :page #x649)
(new 'static 'texture-id :index #x2 :page #x649)
(seconds 3)
#f
self
)
)
)
)
(else
(while (!= (file-status *art-control* "ndi-intro" 0) 'active)
(set-blackout-frames (seconds 0.05))
(suspend)
)
(let ((s5-1 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) s5-1) (seconds 0.25))
(set-blackout-frames (seconds 0.05))
(suspend)
)
)
)
)
(label cfg-8)
(let ((s5-2 (new 'stack-no-clear 'mc-slot-info)))
(mc-get-slot-info 0 s5-2)
(when (or (zero? (-> s5-2 known)) (handle->process (the-as int gp-0)))
(if (not (handle->process (the-as int gp-0)))
(set-blackout-frames (seconds 0.05))
)
(suspend)
(goto cfg-8)
)
(set! (-> *setting-control* default bg-a) 0.0)
(when (or (zero? (-> s5-2 handle))
(and (nonzero? (-> s5-2 formatted)) (zero? (-> s5-2 inited)) (< (-> s5-2 mem-actual) (-> s5-2 mem-required)))
)
(mem-copy! (the-as pointer *auto-save-info*) (the-as pointer s5-2) 300)
(set-blackout-frames 0)
(let ((gp-1 7))
(if (zero? (-> s5-2 handle))
(set! gp-1 8)
)
(set-setting! 'allow-progress #t 0.0 0)
(set-blackout-frames 0)
(set! (-> *setting-control* default bg-a-force) 0.0)
(apply-settings *setting-control*)
(set! (-> *setting-control* current bg-a) 0.0)
(set! (-> *setting-control* current bg-a-force) 0.0)
(activate-progress *dproc* (the-as progress-screen gp-1))
)
(set-setting! 'allow-progress #f 0.0 0)
(apply-settings *setting-control*)
(while *progress-process*
(suspend)
)
(let ((gp-2 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) gp-2) (seconds 0.01))
(suspend)
)
)
(goto cfg-41)
)
)
)
(label cfg-41)
(let ((gp-3 (entity-by-name "logo-1")))
(let ((v1-53 (process-spawn logo gp-3 (-> gp-3 extra trans) 'ndi :to self)))
(set! (-> self manipy) (the-as (pointer manipy) v1-53))
(let ((s5-4 (ppointer->handle v1-53)))
(while (handle->process (the-as handle s5-4))
(suspend)
)
)
)
(set! (-> self manipy)
(the-as (pointer manipy) (process-spawn logo gp-3 (-> gp-3 extra trans) 'logo :to self))
)
)
(go target-title-play)
(none)
)
:post target-no-move-post
)
(defstate target-title-play (target)
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(let ((v1-0 event-type))
(the-as object (cond
((= v1-0 'wait)
(go target-title-wait)
)
((= v1-0 'reset)
(the-as object (deactivate (-> self manipy 0)))
)
(else
(target-generic-event-handler proc arg1 event-type event)
)
)
)
)
)
:enter (behavior ()
(set-setting! 'allow-pause #f 0.0 0)
(set-setting! 'allow-progress #f 0.0 0)
(none)
)
:exit (-> target-title exit)
:trans (the-as (function none :behavior target) hide-hud-quick)
:code (the-as (function none :behavior target) anim-loop)
:post target-no-move-post
)
(defstate target-title-wait (target)
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(let ((v1-0 event-type))
(the-as object (cond
((= v1-0 'play)
(go target-title-play)
)
((= v1-0 'reset)
(the-as object (deactivate (-> self manipy 0)))
)
(else
(target-generic-event-handler proc arg1 event-type event)
)
)
)
)
)
:enter (behavior ()
(remove-setting! 'ambient-volume)
(remove-setting! 'sfx-volume)
(remove-setting! 'music-volume)
;; og:preserve-this PAL patch here (code removal)
(sound-group-continue (sound-group music))
(when *time-of-day-proc*
(set! (-> *time-of-day-proc* 0 time-ratio) 18000.0)
(set! *time-of-day-fast* #t)
)
(none)
)
:exit (behavior ()
(when *time-of-day-proc*
(set! (-> *time-of-day-proc* 0 time-ratio) 300.0)
(set! *time-of-day-fast* #f)
)
;; og:preserve-this PAL patch here
(remove-setting! 'allow-pause)
(remove-setting! 'allow-progress)
((-> target-title exit))
(none)
)
:trans (behavior ()
(hide-hud-quick)
;; og:preserve-this PAL patch here
(when (cpad-pressed? 0 start)
(set-setting! 'allow-progress #t 0.0 0)
(apply-settings *setting-control*)
(activate-progress *dproc* (progress-screen title))
(set-setting! 'allow-progress #f 0.0 0)
(apply-settings *setting-control*)
)
(when (and (< (mod (-> *display* real-frame-counter) 300) 270) (not *progress-process*))
(let ((gp-0
(new 'stack 'font-context *font-default-matrix* 80 170 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-12 gp-0))
(set! (-> v1-12 width) (the float 352))
)
(let ((v1-13 gp-0))
(set! (-> v1-13 height) (the float 40))
)
(set! (-> gp-0 flags) (font-flags shadow kerning middle left large))
(print-game-text (lookup-text! *common-text* (text-id press-start) #f) gp-0 #f 128 22)
)
)
(none)
)
:code (the-as (function none :behavior target) anim-loop)
:post target-no-move-post
)