mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
911a8e32a4
* clean up some types * clean up settings
276 lines
6.4 KiB
Common Lisp
276 lines
6.4 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: static-screen.gc
|
|
;; name in dgo: static-screen
|
|
;; dgos: DEM, L1, TIT
|
|
|
|
|
|
;; definition of type static-screen
|
|
(deftype static-screen (process)
|
|
((part sparticle-launch-control 1 :offset-assert 112)
|
|
(state-time uint64 :offset-assert 120)
|
|
)
|
|
:heap-base #x10
|
|
:method-count-assert 15
|
|
:size-assert #x80
|
|
:flag-assert #xf00100080
|
|
(:methods
|
|
(idle (int int symbol) _type_ :state 14)
|
|
)
|
|
)
|
|
|
|
;; definition for method 7 of type static-screen
|
|
;; INFO: Return type mismatch process vs static-screen.
|
|
(defmethod relocate static-screen ((obj static-screen) (arg0 int))
|
|
(let ((v1-0 *kernel-context*))
|
|
(set! (-> v1-0 relocating-process) obj)
|
|
(set! (-> v1-0 relocating-min) (the-as int (&-> obj type)))
|
|
(set!
|
|
(-> v1-0 relocating-max)
|
|
(the-as
|
|
int
|
|
(+ (+ (-> obj allocated-length) -4 (-> process size)) (the-as int obj))
|
|
)
|
|
)
|
|
(set! (-> v1-0 relocating-offset) arg0)
|
|
)
|
|
(dotimes (v1-2 1)
|
|
(if (nonzero? (-> obj part v1-2))
|
|
(&+! (-> obj part v1-2) arg0)
|
|
)
|
|
)
|
|
(the-as static-screen ((method-of-type process relocate) obj arg0))
|
|
)
|
|
|
|
;; definition for method 10 of type static-screen
|
|
(defmethod deactivate static-screen ((obj static-screen))
|
|
(dotimes (s5-0 1)
|
|
(if (nonzero? (-> obj part s5-0))
|
|
(kill-and-free-particles (-> obj part s5-0))
|
|
)
|
|
)
|
|
((method-of-type process deactivate) obj)
|
|
(none)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(set!
|
|
(-> *part-id-table* 2966)
|
|
(new 'static 'sparticle-launcher
|
|
:init-specs
|
|
(new 'static 'inline-array sp-field-init-spec 12
|
|
(sp-tex spt-texture (new 'static 'texture-id :page #x5c6))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters 1.18))
|
|
(sp-flt spt-scale-x (meters 15.0))
|
|
(sp-flt spt-scale-y (meters 6.5))
|
|
(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 bit2 bit9 bit13)
|
|
(sp-end)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(set!
|
|
(-> *part-id-table* 2967)
|
|
(new 'static 'sparticle-launcher
|
|
:init-specs
|
|
(new 'static 'inline-array sp-field-init-spec 12
|
|
(sp-tex spt-texture (new 'static 'texture-id :index #x1 :page #x5c6))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters -1.264))
|
|
(sp-flt spt-scale-x (meters 15.0))
|
|
(sp-flt spt-scale-y (meters 3.25))
|
|
(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 bit2 bit9 bit13)
|
|
(sp-end)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(set!
|
|
(-> *part-id-table* 2968)
|
|
(new 'static 'sparticle-launcher
|
|
:init-specs
|
|
(new 'static 'inline-array sp-field-init-spec 12
|
|
(sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x5c6))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters -2.482))
|
|
(sp-flt spt-scale-x (meters 15.0))
|
|
(sp-flt spt-scale-y (meters 1.625))
|
|
(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 bit2 bit9 bit13)
|
|
(sp-end)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(set!
|
|
(-> *part-group-id-table* 707)
|
|
(new 'static 'sparticle-launch-group
|
|
:length 3
|
|
:duration #xbb8
|
|
:linger-duration #x5dc
|
|
:flags (sp-group-flag screen-space)
|
|
:name "group-part-screen1"
|
|
:launcher
|
|
(new 'static 'inline-array sparticle-group-item 3
|
|
(sp-item 2966 :flags (launch-asap))
|
|
(sp-item 2967 :flags (launch-asap))
|
|
(sp-item 2968 :flags (launch-asap))
|
|
)
|
|
:bounds (new 'static 'sphere :w 4096.0)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (static-screen)
|
|
:virtual #t
|
|
:enter
|
|
(behavior ((arg0 int) (arg1 int) (arg2 symbol))
|
|
(set! (-> *setting-control* current bg-a) 1.0)
|
|
(set! (-> *setting-control* default bg-a) 0.0)
|
|
(push-setting! *setting-control* self 'common-page 'set 0.0 (ash 1 (+ arg0 1)))
|
|
(none)
|
|
)
|
|
:trans
|
|
(behavior ()
|
|
(hide-hud-quick)
|
|
(spawn (-> self part 0) *zero-vector*)
|
|
0
|
|
(none)
|
|
)
|
|
:code
|
|
(behavior ((arg0 int) (arg1 int) (arg2 symbol))
|
|
(local-vars (v1-6 symbol))
|
|
(set! (-> self state-time) (the-as uint (-> *display* base-frame-counter)))
|
|
(until v1-6
|
|
(suspend)
|
|
(set!
|
|
v1-6
|
|
(or
|
|
(and
|
|
(> arg1 0)
|
|
(>=
|
|
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
|
|
arg1
|
|
)
|
|
)
|
|
(and
|
|
arg2
|
|
(>=
|
|
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
|
|
300
|
|
)
|
|
(logtest?
|
|
(-> *cpad-list* cpads 0 button0-rel 0)
|
|
(pad-buttons select start triangle circle x square)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> *setting-control* default bg-a) 1.0)
|
|
(while
|
|
(!= (-> *setting-control* current bg-a) (-> *setting-control* default bg-a))
|
|
(suspend)
|
|
)
|
|
(clear-pending-settings-from-process *setting-control* self 'common-page)
|
|
(suspend)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
;; definition for function static-screen-init-by-other
|
|
;; INFO: Return type mismatch int vs none.
|
|
(defbehavior
|
|
static-screen-init-by-other static-screen
|
|
((arg0 int) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 symbol))
|
|
(let ((s3-0 (lookup-part-group-by-name "group-part-screen1")))
|
|
(when
|
|
(and
|
|
s3-0
|
|
(nonzero? s3-0)
|
|
(type-type? (-> s3-0 type) sparticle-launch-group)
|
|
)
|
|
(set!
|
|
(-> *part-id-table* 2966 init-specs 0 initial-valuef)
|
|
(the-as float arg1)
|
|
)
|
|
(set!
|
|
(-> *part-id-table* 2967 init-specs 0 initial-valuef)
|
|
(the-as float arg2)
|
|
)
|
|
(set!
|
|
(-> *part-id-table* 2968 init-specs 0 initial-valuef)
|
|
(the-as float arg3)
|
|
)
|
|
(set!
|
|
(-> self part 0)
|
|
(create-launch-control (the-as sparticle-launch-group s3-0) self)
|
|
)
|
|
(go-virtual idle arg0 arg4 arg5)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function static-screen-spawn
|
|
;; Used lq/sq
|
|
(defun
|
|
static-screen-spawn
|
|
((arg0 int)
|
|
(arg1 int)
|
|
(arg2 int)
|
|
(arg3 int)
|
|
(arg4 int)
|
|
(arg5 symbol)
|
|
(arg6 target)
|
|
)
|
|
(local-vars (sv-16 process))
|
|
(set! sv-16 (get-process *default-dead-pool* static-screen #x4000))
|
|
(when sv-16
|
|
(let ((t9-1 (method-of-type static-screen activate)))
|
|
(t9-1
|
|
(the-as static-screen sv-16)
|
|
arg6
|
|
'static-screen
|
|
(the-as pointer #x70004000)
|
|
)
|
|
)
|
|
(run-now-in-process
|
|
sv-16
|
|
static-screen-init-by-other
|
|
arg0
|
|
arg1
|
|
arg2
|
|
arg3
|
|
arg4
|
|
arg5
|
|
)
|
|
(-> sv-16 ppointer)
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|