mirror of
https://github.com/open-goal/jak-project
synced 2026-07-06 05:54:45 -04:00
f3c63f26bb
Fixes https://github.com/open-goal/jak-project/issues/1821 by adding a special case for `new` method calls where the argument with type `symbol` is actually an address to uninitialized structure on the stack. Fixes https://github.com/open-goal/jak-project/issues/1849 (or at least the cause of the issue Vaser gave in chat, and one random one I found in `debug-sphere`) Fixes https://github.com/open-goal/jak-project/issues/1853 Fixes https://github.com/open-goal/jak-project/issues/1857 by moving the cast into the cond if the body is a single form and the destination type is a bitfield/enum which is likely to work well. Seems to work on the examples we could find in jak 1 and jak 2. Also fixes an issue with casts on the result of `handle->process` (a common place to use casts) the output of process->handle is a plain process. Most of the time, you end up casting this to a more specific. If you add a cast on every use of the variable, the decompiler will decide to change the type of that variable to the more specific type, and this breaks the handle cast. so previously it was impossible to get code like ``` (let* ((s2-0 (the-as swingpole (handle->process (-> self control hack)))) (gp-0 (-> s2-0 dir)) ) ``` But now it will work
2581 lines
89 KiB
Common Lisp
Vendored
Generated
2581 lines
89 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition for method 8 of type subtitle-range
|
|
(defmethod mem-usage subtitle-range ((obj subtitle-range) (arg0 memory-usage-block) (arg1 int))
|
|
(set! (-> arg0 length) (max 73 (-> arg0 length)))
|
|
(set! (-> arg0 data 72 name) "subtitle")
|
|
(+! (-> arg0 data 72 count) 1)
|
|
(let ((v1-6 (asize-of obj)))
|
|
(+! (-> arg0 data 72 used) v1-6)
|
|
(+! (-> arg0 data 72 total) (logand -16 (+ v1-6 15)))
|
|
)
|
|
obj
|
|
)
|
|
|
|
;; definition for method 3 of type load-dir
|
|
;; INFO: Used lq/sq
|
|
(defmethod inspect load-dir ((obj load-dir))
|
|
(local-vars (sv-16 basic))
|
|
(format #t "[~8x] ~A~%" obj (-> obj type))
|
|
(format #t "~Tlevel: ~A~%" (-> obj lev))
|
|
(format #t "~Tallocated-length: ~D~%" (-> obj string-array allocated-length))
|
|
(format #t "~Tlength: ~D~%" (-> obj string-array length))
|
|
(dotimes (s5-0 (-> obj string-array length))
|
|
(let ((s4-0 format)
|
|
(s3-0 #t)
|
|
(s2-0 "~T [~D] ~S ~A (~D bytes)~%")
|
|
(s1-0 s5-0)
|
|
(s0-0 (-> obj string-array s5-0))
|
|
)
|
|
(set! sv-16 (-> obj data-array s5-0))
|
|
(let ((t1-0 (mem-size (-> obj data-array s5-0) #f 0)))
|
|
(s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 t1-0)
|
|
)
|
|
)
|
|
)
|
|
obj
|
|
)
|
|
|
|
;; definition for method 8 of type load-dir
|
|
;; WARN: Return type mismatch symbol vs load-dir.
|
|
(defmethod mem-usage load-dir ((obj load-dir) (arg0 memory-usage-block) (arg1 int))
|
|
(set! (-> arg0 length) (max 85 (-> arg0 length)))
|
|
(set! (-> arg0 data 84 name) "array")
|
|
(+! (-> arg0 data 84 count) 1)
|
|
(let ((v1-6 (asize-of obj)))
|
|
(+! (-> arg0 data 84 used) v1-6)
|
|
(+! (-> arg0 data 84 total) (logand -16 (+ v1-6 15)))
|
|
)
|
|
(set! (-> arg0 length) (max 85 (-> arg0 length)))
|
|
(set! (-> arg0 data 84 name) "array")
|
|
(set! (-> arg0 data 84 count) (-> arg0 data 84 count))
|
|
(let ((v1-15 (asize-of (-> obj string-array))))
|
|
(+! (-> arg0 data 84 used) v1-15)
|
|
(+! (-> arg0 data 84 total) (logand -16 (+ v1-15 15)))
|
|
)
|
|
(set! (-> arg0 length) (max 85 (-> arg0 length)))
|
|
(set! (-> arg0 data 84 name) "array")
|
|
(set! (-> arg0 data 84 count) (-> arg0 data 84 count))
|
|
(let ((v1-24 (asize-of (-> obj data-array))))
|
|
(+! (-> arg0 data 84 used) v1-24)
|
|
(+! (-> arg0 data 84 total) (logand -16 (+ v1-24 15)))
|
|
)
|
|
(dotimes (s3-0 (-> obj data-array length))
|
|
(mem-usage (-> obj data-array s3-0) arg0 arg1)
|
|
)
|
|
(the-as load-dir #f)
|
|
)
|
|
|
|
;; definition for method 9 of type load-dir-art-group
|
|
(defmethod load-to-heap-by-name load-dir-art-group ((obj load-dir-art-group) (arg0 string) (arg1 symbol) (arg2 kheap) (arg3 int))
|
|
(let ((s5-0 (-> obj string-array)))
|
|
(dotimes (s3-0 (-> s5-0 length))
|
|
(when (string= arg0 (-> s5-0 s3-0))
|
|
(when arg1
|
|
(let ((v1-4 (art-group-load-check arg0 arg2 arg3)))
|
|
(if v1-4
|
|
(set! (-> obj art-group-array s3-0) v1-4)
|
|
)
|
|
)
|
|
)
|
|
(return (-> obj art-group-array s3-0))
|
|
)
|
|
)
|
|
(let ((v0-2 (art-group-load-check arg0 arg2 arg3)))
|
|
(when v0-2
|
|
(set! (-> s5-0 (-> s5-0 length)) arg0)
|
|
(set! (-> obj art-group-array (-> s5-0 length)) v0-2)
|
|
(+! (-> s5-0 length) 1)
|
|
(+! (-> obj art-group-array length) 1)
|
|
)
|
|
v0-2
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type load-dir-art-group
|
|
(defmethod set-loaded-art load-dir-art-group ((obj load-dir-art-group) (arg0 art-group))
|
|
(let ((s4-0 (-> obj string-array)))
|
|
(dotimes (s3-0 (-> s4-0 length))
|
|
(when (string= (-> arg0 name) (-> s4-0 s3-0))
|
|
(set! (-> obj art-group-array s3-0) arg0)
|
|
(set! arg0 (-> obj art-group-array s3-0))
|
|
(goto cfg-7)
|
|
)
|
|
)
|
|
(set! (-> s4-0 (-> s4-0 length)) (-> arg0 name))
|
|
(set! (-> obj art-group-array (-> s4-0 length)) arg0)
|
|
(+! (-> s4-0 length) 1)
|
|
)
|
|
(+! (-> obj art-group-array length) 1)
|
|
(label cfg-7)
|
|
arg0
|
|
)
|
|
|
|
;; definition for function drawable-load
|
|
(defun drawable-load ((arg0 drawable) (arg1 kheap))
|
|
(local-vars (sp-0 pointer))
|
|
(cond
|
|
((type? arg0 string)
|
|
(the-as none sp-0)
|
|
(if (< (the-as uint sp-0) (the-as uint *stack-top*))
|
|
(set! sp-0 (&+ *kernel-sp* -1024))
|
|
)
|
|
(let ((s5-1 (loado (the-as string arg0) arg1)))
|
|
(if (and s5-1 (type? s5-1 drawable))
|
|
(login (the-as drawable s5-1))
|
|
)
|
|
)
|
|
)
|
|
((type? arg0 drawable)
|
|
(login arg0)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function art-load
|
|
(defun art-load ((arg0 string) (arg1 kheap))
|
|
(local-vars (sp-0 pointer))
|
|
(the-as none sp-0)
|
|
(if (< (the-as uint sp-0) (the-as uint *stack-top*))
|
|
(set! sp-0 (&+ *kernel-sp* -1024))
|
|
)
|
|
(let ((s5-0 (loado arg0 arg1)))
|
|
(if (type? s5-0 art)
|
|
(login (the-as art s5-0))
|
|
(the-as art #f)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function art-group-load-check
|
|
(defun art-group-load-check ((arg0 string) (arg1 kheap) (arg2 int))
|
|
(local-vars (sp-0 pointer))
|
|
(when *debug-segment*
|
|
(the-as none sp-0)
|
|
(if (< (the-as uint sp-0) (the-as uint *stack-top*))
|
|
(set! sp-0 (&+ *kernel-sp* -1024))
|
|
)
|
|
(let ((s3-1 (loado (make-file-name (file-kind art-group) arg0 arg2 #f) arg1)))
|
|
(cond
|
|
((not s3-1)
|
|
(format 0 "ERROR: art-group ~A is not a valid file.~%" arg0)
|
|
(the-as art-group #f)
|
|
)
|
|
((not (type? s3-1 art-group))
|
|
(format 0 "ERROR: art-group ~A is not a art-group.~%" arg0)
|
|
(the-as art-group #f)
|
|
)
|
|
((not (file-info-correct-version? (-> (the-as art-group s3-1) info) (file-kind art-group) arg2))
|
|
(the-as art-group #f)
|
|
)
|
|
(else
|
|
(login (the-as art-group s3-1))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 2 of type external-art-buffer
|
|
(defmethod print external-art-buffer ((obj external-art-buffer))
|
|
(format
|
|
#t
|
|
"#<~A ~S ~D ~A @ #x~X>"
|
|
(-> obj type)
|
|
(-> obj pending-load-file)
|
|
(-> obj pending-load-file-part)
|
|
(-> obj status)
|
|
obj
|
|
)
|
|
obj
|
|
)
|
|
|
|
;; definition for function external-art-buffer-init
|
|
(defun external-art-buffer-init ((arg0 external-art-buffer))
|
|
(let ((v1-0 (-> arg0 heap)))
|
|
(set! (-> v1-0 base) (the-as pointer (+ #x84000 (* #x3dc00 (-> arg0 index)))))
|
|
(set! (-> v1-0 current) (-> v1-0 base))
|
|
(set! (-> v1-0 top-base) (&+ (-> v1-0 base) #x3dc00))
|
|
(set! (-> v1-0 top) (-> v1-0 top-base))
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 9 of type external-art-buffer
|
|
(defmethod set-pending-file external-art-buffer ((obj external-art-buffer) (arg0 string) (arg1 int) (arg2 handle) (arg3 float))
|
|
(set! (-> obj pending-load-file) arg0)
|
|
(set! (-> obj pending-load-file-part) arg1)
|
|
(set! (-> obj pending-load-file-owner) arg2)
|
|
(set! (-> obj pending-load-file-priority) arg3)
|
|
0
|
|
)
|
|
|
|
;; definition for method 15 of type external-art-buffer
|
|
(defmethod unlock! external-art-buffer ((obj external-art-buffer))
|
|
(set! (-> obj locked?) #f)
|
|
0
|
|
)
|
|
|
|
;; definition for method 11 of type external-art-buffer
|
|
(defmethod inactive? external-art-buffer ((obj external-art-buffer))
|
|
(!= (-> obj status) 'active)
|
|
)
|
|
|
|
;; definition for method 12 of type external-art-buffer
|
|
(defmethod file-status external-art-buffer ((obj external-art-buffer) (arg0 string) (arg1 int))
|
|
(when (and (name= (-> obj pending-load-file) arg0) (= (-> obj pending-load-file-part) arg1))
|
|
(if (and (name= (-> obj load-file) arg0) (= (-> obj load-file-part) arg1))
|
|
(-> obj status)
|
|
'pending
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 13 of type art-group
|
|
(defmethod link-art! art-group ((obj art-group))
|
|
(when obj
|
|
(countdown (s5-0 (-> obj length))
|
|
(let* ((s3-0 (-> obj data s5-0))
|
|
(s4-0 (if (type? s3-0 art-joint-anim)
|
|
(the-as art-joint-anim s3-0)
|
|
)
|
|
)
|
|
(s2-0 #f)
|
|
)
|
|
(when s4-0
|
|
(let ((s3-1 7))
|
|
(while (begin (label cfg-24) (nonzero? s3-1))
|
|
(+! s3-1 -1)
|
|
(let ((v1-8 (get-art-group-by-name (-> *level* level s3-1) (-> s4-0 master-art-group-name))))
|
|
(when v1-8
|
|
(countdown (a0-5 (-> v1-8 length))
|
|
(if (= (-> v1-8 data a0-5) s4-0)
|
|
(goto cfg-24)
|
|
)
|
|
)
|
|
(cond
|
|
((and (< (-> s4-0 master-art-group-index) (-> v1-8 length))
|
|
(not (-> v1-8 data (-> s4-0 master-art-group-index)))
|
|
)
|
|
(set! (-> v1-8 data (-> s4-0 master-art-group-index)) s4-0)
|
|
(set! s2-0 #t)
|
|
)
|
|
(else
|
|
(countdown (a0-17 (-> v1-8 length))
|
|
(when (not (-> v1-8 data a0-17))
|
|
(set! (-> v1-8 data a0-17) s4-0)
|
|
(set! s2-0 #t)
|
|
(goto cfg-24)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(if (not s2-0)
|
|
(format 0 "ERROR: ~A could not find a master slot to link for ~A.~%" (-> obj name) s4-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
obj
|
|
)
|
|
|
|
;; definition for method 14 of type art-group
|
|
(defmethod unlink-art! art-group ((obj art-group))
|
|
(when obj
|
|
(countdown (s5-0 (-> obj length))
|
|
(let* ((s3-0 (-> obj data s5-0))
|
|
(s4-0 (if (type? s3-0 art-joint-anim)
|
|
(the-as art-joint-anim s3-0)
|
|
)
|
|
)
|
|
(s3-1 #f)
|
|
)
|
|
(when s4-0
|
|
(let ((s2-0 7))
|
|
(while (begin (label cfg-13) (nonzero? s2-0))
|
|
(+! s2-0 -1)
|
|
(let ((v1-8 (get-art-group-by-name (-> *level* level s2-0) (-> s4-0 master-art-group-name))))
|
|
(when v1-8
|
|
(countdown (a0-5 (-> v1-8 length))
|
|
(when (= s4-0 (-> v1-8 data a0-5))
|
|
(set! (-> v1-8 data a0-5) #f)
|
|
(set! s3-1 #t)
|
|
(goto cfg-13)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(if (not s3-1)
|
|
(format 0 "ERROR: ~A could not find a master slot to unlink for ~A.~%" (-> obj name) s4-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 13 of type external-art-buffer
|
|
(defmethod link-file external-art-buffer ((obj external-art-buffer) (arg0 art-group))
|
|
(when arg0
|
|
(link-art! arg0)
|
|
(set! (-> obj art-group) arg0)
|
|
)
|
|
arg0
|
|
)
|
|
|
|
;; definition for method 14 of type external-art-buffer
|
|
(defmethod unlink-file external-art-buffer ((obj external-art-buffer) (arg0 art-group))
|
|
(when arg0
|
|
(unlink-art! arg0)
|
|
(set! (-> obj art-group) #f)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 10 of type external-art-buffer
|
|
;; WARN: Found some very strange gotos. Check result carefully, this is not well tested.
|
|
(defmethod update external-art-buffer ((obj external-art-buffer))
|
|
(when (or (not (name= (-> obj pending-load-file) (-> obj load-file)))
|
|
(!= (-> obj pending-load-file-part) (-> obj load-file-part))
|
|
)
|
|
(when (not (handle->process (-> obj pending-load-file-owner)))
|
|
(set! (-> obj pending-load-file) #f)
|
|
(set! (-> obj pending-load-file-part) -1)
|
|
(set! (-> obj pending-load-file-owner) (the-as handle #f))
|
|
(set! (-> obj pending-load-file-priority) 100000000.0)
|
|
)
|
|
(when (= (-> obj status) 'initialize)
|
|
((-> obj init-heap) obj)
|
|
(set! (-> obj status) 'inactive)
|
|
)
|
|
(cond
|
|
((-> obj load-file)
|
|
(if (= (-> obj status) 'loading)
|
|
(str-load-cancel)
|
|
)
|
|
(set! (-> obj load-file) #f)
|
|
(set! (-> obj load-file-part) -1)
|
|
(set! (-> obj load-file-owner) (the-as handle #f))
|
|
(set! (-> obj load-file-priority) 100000000.0)
|
|
)
|
|
(else
|
|
(set! (-> obj load-file) (-> obj pending-load-file))
|
|
(set! (-> obj load-file-part) (-> obj pending-load-file-part))
|
|
(set! (-> obj load-file-owner) (-> obj pending-load-file-owner))
|
|
(set! (-> obj load-file-priority) (-> obj pending-load-file-priority))
|
|
)
|
|
)
|
|
)
|
|
(label cfg-18)
|
|
(cond
|
|
((-> obj load-file)
|
|
(case (-> obj status)
|
|
(('active 'reserved)
|
|
)
|
|
(('error)
|
|
(set! (-> obj status) 'inactive)
|
|
(set! (-> obj load-file) #f)
|
|
(set! (-> obj load-file-part) -1)
|
|
(set! (-> obj load-file-owner) (the-as handle #f))
|
|
(set! (-> obj load-file-priority) 100000000.0)
|
|
(set! (-> obj pending-load-file) #f)
|
|
(set! (-> obj pending-load-file-part) -1)
|
|
(set! (-> obj pending-load-file-owner) (the-as handle #f))
|
|
(set! (-> obj pending-load-file-priority) 100000000.0)
|
|
(set! (-> obj art-group) #f)
|
|
)
|
|
(('inactive)
|
|
(let ((v1-31 (-> obj heap)))
|
|
(set! (-> v1-31 current) (-> v1-31 base))
|
|
)
|
|
(cond
|
|
((string= (-> obj load-file) "reserved")
|
|
(cond
|
|
((-> *art-control* reserve-buffer)
|
|
(format 0 "ERROR: trying double reserve ~A when ~A is reserved~%" obj (-> *art-control* reserve-buffer))
|
|
)
|
|
(else
|
|
(set! (-> obj status) 'reserved)
|
|
(set! (-> *art-control* reserve-buffer) obj)
|
|
)
|
|
)
|
|
)
|
|
((and (!= (-> *level* loading-level) (-> *level* default-level)) (< 81920.0 (-> obj load-file-priority)))
|
|
)
|
|
((let ((v1-44 (logand -64 (&+ (-> obj heap current) 63))))
|
|
(str-load (-> obj load-file) (-> obj load-file-part) v1-44 (&- (-> obj heap top) (the-as uint v1-44)))
|
|
)
|
|
(set! (-> obj status) 'loading)
|
|
0
|
|
)
|
|
)
|
|
)
|
|
(('loading)
|
|
(case (str-load-status (&-> obj len))
|
|
(('error)
|
|
(set! (-> obj status) 'error)
|
|
)
|
|
(('busy)
|
|
)
|
|
(else
|
|
(set! (-> obj buf) (logand -64 (&+ (-> obj heap current) 63)))
|
|
(set! (-> obj status) 'loaded)
|
|
(goto cfg-18)
|
|
)
|
|
)
|
|
)
|
|
(('loaded)
|
|
(let ((a0-34 (-> obj buf)))
|
|
(cond
|
|
((-> obj login?)
|
|
(set! (-> obj art-group) (the-as art-group (link a0-34 (-> obj load-file data) (-> obj len) (-> obj heap) 0)))
|
|
(let ((s4-0 (-> obj art-group))
|
|
(s3-0 (-> obj load-file))
|
|
)
|
|
(cond
|
|
((not s4-0)
|
|
(format 0 "ERROR: art-group ~A part ~D is not a valid file.~%" s3-0 (-> obj load-file-part))
|
|
(set! (-> obj status) 'error)
|
|
)
|
|
((not (type? s4-0 art-group))
|
|
(format 0 "ERROR: art-group ~A part ~D is not a art-group.~%" s3-0 (-> obj load-file-part))
|
|
(set! (-> obj status) 'error)
|
|
)
|
|
((not (file-info-correct-version? (-> s4-0 info) (file-kind art-group) 0))
|
|
(set! (-> obj status) 'error)
|
|
)
|
|
(else
|
|
(login s4-0)
|
|
(set! (-> obj status) 'locked)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> obj status) 'locked)
|
|
(set! (-> obj art-group) (the-as art-group a0-34))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(('locked)
|
|
(when (and (not (-> obj locked?)) (handle->process (-> obj load-file-owner)))
|
|
(if (-> obj login?)
|
|
(link-file obj (-> obj art-group))
|
|
)
|
|
(if (-> obj other)
|
|
(set! (-> obj other locked?) #t)
|
|
)
|
|
(set! (-> obj status) 'active)
|
|
(goto cfg-18)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(case (-> obj status)
|
|
(('initialize)
|
|
)
|
|
(('reserved)
|
|
(cond
|
|
((= (-> *art-control* reserve-buffer) obj)
|
|
(set! (-> *art-control* reserve-buffer) #f)
|
|
(set! (-> obj status) 'inactive)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: trying tro free ~A when ~A is reserved~%" obj (-> *art-control* reserve-buffer))
|
|
)
|
|
)
|
|
)
|
|
(('active)
|
|
(if (-> obj login?)
|
|
(unlink-file obj (-> obj art-group))
|
|
)
|
|
(let ((v1-86 (-> obj heap)))
|
|
(set! (-> v1-86 current) (-> v1-86 base))
|
|
)
|
|
(set! (-> obj art-group) #f)
|
|
(set! (-> obj status) 'inactive)
|
|
(when (and (-> obj other) (-> obj other locked?))
|
|
(unlock! (-> obj other))
|
|
(update (-> obj other))
|
|
)
|
|
)
|
|
(else
|
|
(let ((v1-96 (-> obj heap)))
|
|
(set! (-> v1-96 current) (-> v1-96 base))
|
|
)
|
|
(set! (-> obj art-group) #f)
|
|
(set! (-> obj status) 'inactive)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for symbol *preload-spool-anims*, type symbol
|
|
(define *preload-spool-anims* #t)
|
|
|
|
;; definition for method 12 of type external-art-control
|
|
(defmethod file-status external-art-control ((obj external-art-control) (arg0 string) (arg1 int))
|
|
(dotimes (s3-0 2)
|
|
(let ((v1-3 (file-status (-> obj buffer s3-0) arg0 arg1)))
|
|
(if v1-3
|
|
(return v1-3)
|
|
)
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
|
|
;; definition for method 9 of type external-art-control
|
|
(defmethod update external-art-control ((obj external-art-control) (arg0 symbol))
|
|
(if (nonzero? (-> obj reserve-buffer-count))
|
|
(spool-push obj "reserved" 0 *dproc* (if (-> obj reserve-buffer)
|
|
-110.0
|
|
-0.5
|
|
)
|
|
)
|
|
)
|
|
(dotimes (v1-5 2)
|
|
(set! (-> obj buffer v1-5 frame-lock) #f)
|
|
)
|
|
(dotimes (v1-8 3)
|
|
(set! (-> obj rec v1-8 buffer) #f)
|
|
)
|
|
(dotimes (s4-0 2)
|
|
(let ((s3-0 (-> obj rec s4-0)))
|
|
(when (-> s3-0 name)
|
|
(dotimes (s2-0 2)
|
|
(when (and (file-status (-> obj buffer s2-0) (-> s3-0 name) (the-as int (-> s3-0 parts)))
|
|
(not (-> obj buffer s2-0 frame-lock))
|
|
)
|
|
(set! (-> obj buffer s2-0 frame-lock) #t)
|
|
(set! (-> s3-0 buffer) (-> obj buffer s2-0))
|
|
(set! (-> obj buffer s2-0 pending-load-file-owner) (-> s3-0 owner))
|
|
(set! (-> obj buffer s2-0 load-file-owner) (-> s3-0 owner))
|
|
(set! (-> obj buffer s2-0 pending-load-file-priority) (-> s3-0 priority))
|
|
(set! (-> obj buffer s2-0 load-file-priority) (-> s3-0 priority))
|
|
(goto cfg-24)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(label cfg-24)
|
|
)
|
|
(dotimes (s4-1 2)
|
|
(let ((s3-1 (-> obj rec s4-1)))
|
|
(when (and (-> s3-1 name) (not (-> s3-1 buffer)))
|
|
(if (and (not *preload-spool-anims*) (>= (-> s3-1 priority) 0.0))
|
|
(goto cfg-46)
|
|
)
|
|
(dotimes (s2-1 2)
|
|
(when (not (-> obj buffer s2-1 frame-lock))
|
|
(set! (-> obj buffer s2-1 frame-lock) #t)
|
|
(set-pending-file
|
|
(-> obj buffer s2-1)
|
|
(-> s3-1 name)
|
|
(the-as int (-> s3-1 parts))
|
|
(-> s3-1 owner)
|
|
(-> s3-1 priority)
|
|
)
|
|
(set! (-> s3-1 buffer) (-> obj buffer s2-1))
|
|
(goto cfg-46)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(label cfg-46)
|
|
)
|
|
(when (not (-> obj reserve-buffer))
|
|
(let ((s4-2 (-> obj rec 0 buffer)))
|
|
(if (and s4-2
|
|
(-> s4-2 locked?)
|
|
(not (string= (-> s4-2 pending-load-file) "reserved"))
|
|
(not (string= (-> s4-2 other pending-load-file) "reserved"))
|
|
)
|
|
(set-pending-file (-> s4-2 other) (the-as string #f) -1 (the-as handle #f) 100000000.0)
|
|
)
|
|
)
|
|
)
|
|
(dotimes (s4-3 2)
|
|
(update (-> obj buffer s4-3))
|
|
)
|
|
(let ((s4-4 (-> obj queue-stream)))
|
|
(set! (-> s4-4 length) 0)
|
|
(dotimes (s3-2 3)
|
|
(when (-> obj rec s3-2 name)
|
|
(mem-copy! (&-> (-> s4-4 (-> s4-4 length)) type) (&-> (-> obj rec s3-2) type) 44)
|
|
(+! (-> s4-4 length) 1)
|
|
)
|
|
)
|
|
)
|
|
(when (and arg0 *display-art-control*)
|
|
(dotimes (s5-1 3)
|
|
(let ((t9-8 format)
|
|
(a0-27 *stdcon*)
|
|
(a1-8 "rec ~d ~S ~D ~f ~A~%")
|
|
(a2-5 s5-1)
|
|
(a3-3 (-> obj rec s5-1 name))
|
|
(t0-3 (-> obj rec s5-1 parts))
|
|
(t1-0 (-> obj rec s5-1 priority))
|
|
(v1-121 (handle->process (-> obj rec s5-1 owner)))
|
|
)
|
|
(t9-8 a0-27 a1-8 a2-5 a3-3 t0-3 t1-0 (if v1-121
|
|
(-> v1-121 name)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(dotimes (s5-2 2)
|
|
(let ((t9-9 format)
|
|
(a0-28 *stdcon*)
|
|
(a1-9 "buf ~d ~C ~S ~D ~A ~A~%")
|
|
(a2-6 s5-2)
|
|
(a3-4 (if (-> obj buffer s5-2 locked?)
|
|
108
|
|
32
|
|
)
|
|
)
|
|
(t0-4 (-> obj buffer s5-2 pending-load-file))
|
|
(t1-1 (-> obj buffer s5-2 pending-load-file-part))
|
|
(t2-5 (-> obj buffer s5-2 status))
|
|
(v1-142 (handle->process (-> obj buffer s5-2 pending-load-file-owner)))
|
|
)
|
|
(t9-9 a0-28 a1-9 a2-6 a3-4 t0-4 t1-1 t2-5 (if v1-142
|
|
(-> v1-142 name)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(format *stdcon* " a: ~S~%" (-> obj active-stream))
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 15 of type external-art-control
|
|
(defmethod none-reserved? external-art-control ((obj external-art-control))
|
|
(zero? (-> obj reserve-buffer-count))
|
|
)
|
|
|
|
;; definition for method 13 of type external-art-control
|
|
(defmethod reserve-alloc external-art-control ((obj external-art-control))
|
|
(cond
|
|
((or (nonzero? (-> obj dma-reserve-buffer-count)) (= *master-mode* 'progress))
|
|
(set! (-> obj dma-reserve-buffer-count) 1)
|
|
(when (and (-> *bigmap* drawing-flag) (zero? (-> *blit-displays-work* count-down)))
|
|
(let ((v1-8 (-> obj dma-reserve-heap)))
|
|
(set! (-> v1-8 base) (logand -64 (&+ (&+ (-> *display* frames 1 global-buf end) -252992) 63)))
|
|
(set! (-> v1-8 current) (-> v1-8 base))
|
|
(set! (-> v1-8 top-base) (&+ (-> v1-8 base) #x3dc00))
|
|
(set! (-> v1-8 top) (-> v1-8 top-base))
|
|
)
|
|
(set! (-> *display* frames 1 global-buf end) (-> obj dma-reserve-heap base))
|
|
(-> obj dma-reserve-heap)
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> obj reserve-buffer-count) 1)
|
|
(if (and (-> obj reserve-buffer) (not (check-busy *load-str-rpc*)))
|
|
(-> obj reserve-buffer heap)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 14 of type external-art-control
|
|
(defmethod reserve-free external-art-control ((obj external-art-control) (arg0 kheap))
|
|
(cond
|
|
((nonzero? (-> obj dma-reserve-buffer-count))
|
|
(set! (-> obj dma-reserve-buffer-count) 0)
|
|
(let ((v1-3 (-> *display* frames 1 global-buf)))
|
|
(set! (-> v1-3 end) (&-> v1-3 data-buffer (-> v1-3 allocated-length)))
|
|
)
|
|
)
|
|
((and (zero? (-> obj reserve-buffer-count)) (zero? (-> obj dma-reserve-buffer-count)))
|
|
(format 0 "ERROR: illegal attempt to free a buffer #x~X which had not been reserved (none reserved).~%" arg0)
|
|
)
|
|
((not (-> obj reserve-buffer))
|
|
(set! (-> obj reserve-buffer-count) 0)
|
|
0
|
|
)
|
|
((= (-> obj reserve-buffer heap) arg0)
|
|
(set-pending-file (-> obj reserve-buffer) (the-as string #f) -1 (the-as handle #f) 100000000.0)
|
|
(update (-> obj reserve-buffer))
|
|
(set! (-> obj reserve-buffer-count) 0)
|
|
0
|
|
)
|
|
(else
|
|
(format 0 "ERROR: illegal attempt to free a buffer #x~X which had not been reserved (buffer unknown).~%" arg0)
|
|
)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 10 of type external-art-control
|
|
(defmethod clear-rec external-art-control ((obj external-art-control))
|
|
(dotimes (v1-0 3)
|
|
(set! (-> obj rec v1-0 type) spool-anim)
|
|
(set! (-> obj rec v1-0 name) #f)
|
|
(set! (-> obj rec v1-0 priority) 100000000.0)
|
|
(set! (-> obj rec v1-0 owner) (the-as handle #f))
|
|
)
|
|
(set! (-> obj frame-mask) (the-as uint (-> *setting-control* user-current process-mask)))
|
|
0
|
|
)
|
|
|
|
;; definition for method 11 of type external-art-control
|
|
(defmethod spool-push external-art-control ((obj external-art-control) (arg0 string) (arg1 int) (arg2 process) (arg3 float))
|
|
(when (and (= arg3 -99.0) arg2)
|
|
(let ((a0-2 (target-pos 0)))
|
|
(set! arg3 (vector-vector-distance a0-2 (-> (the-as process-drawable arg2) root trans)))
|
|
)
|
|
)
|
|
(cond
|
|
((and (= arg1 (-> obj rec 0 parts)) (name= arg0 (-> obj rec 0 name)))
|
|
(if (>= arg3 (-> obj rec 0 priority))
|
|
(return (the-as int #f))
|
|
)
|
|
(mem-copy! (&-> (-> obj rec) 0 type) (&-> (-> obj rec 1) type) 44)
|
|
(mem-copy! (&-> (-> obj rec 1) type) (&-> (-> obj rec 2) type) 44)
|
|
(set! (-> obj rec 2 name) #f)
|
|
(set! (-> obj rec 2 owner) (the-as handle #f))
|
|
)
|
|
((and (= arg1 (-> obj rec 1 parts)) (name= arg0 (-> obj rec 1 name)))
|
|
(if (>= arg3 (-> obj rec 1 priority))
|
|
(return (the-as int #f))
|
|
)
|
|
(mem-copy! (&-> (-> obj rec 1) type) (&-> (-> obj rec 2) type) 44)
|
|
(set! (-> obj rec 2 name) #f)
|
|
(set! (-> obj rec 2 owner) (the-as handle #f))
|
|
)
|
|
((and (= arg1 (-> obj rec 2 parts)) (name= arg0 (-> obj rec 2 name)))
|
|
(if (>= arg3 (-> obj rec 2 priority))
|
|
(return (the-as int #f))
|
|
)
|
|
(set! (-> obj rec 2 name) #f)
|
|
(set! (-> obj rec 2 owner) (the-as handle #f))
|
|
)
|
|
)
|
|
(cond
|
|
((< arg3 (-> obj rec 0 priority))
|
|
(mem-copy! (&-> (-> obj rec 2) type) (&-> (-> obj rec 1) type) 44)
|
|
(mem-copy! (&-> (-> obj rec 1) type) (&-> (-> obj rec) 0 type) 44)
|
|
(set! (-> obj rec 0 name) arg0)
|
|
(set! (-> obj rec 0 parts) arg1)
|
|
(set! (-> obj rec 0 priority) arg3)
|
|
(set! (-> obj rec 0 owner) (process->handle arg2))
|
|
)
|
|
((< arg3 (-> obj rec 1 priority))
|
|
(mem-copy! (&-> (-> obj rec 2) type) (&-> (-> obj rec 1) type) 44)
|
|
(set! (-> obj rec 1 name) arg0)
|
|
(set! (-> obj rec 1 parts) arg1)
|
|
(set! (-> obj rec 1 priority) arg3)
|
|
(set! (-> obj rec 1 owner) (process->handle arg2))
|
|
)
|
|
((< arg3 (-> obj rec 2 priority))
|
|
(set! (-> obj rec 2 name) arg0)
|
|
(set! (-> obj rec 2 parts) arg1)
|
|
(set! (-> obj rec 2 priority) arg3)
|
|
(set! (-> obj rec 2 owner) (process->handle arg2))
|
|
)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition of type spooler-block
|
|
(deftype spooler-block (basic)
|
|
((anim spool-anim :offset-assert 4)
|
|
(idle art-joint-anim :offset-assert 8)
|
|
(exit art-joint-anim :offset-assert 12)
|
|
(break-func (function process-drawable object) :offset-assert 16)
|
|
(part int32 :offset-assert 20)
|
|
(part-audio-start float :offset-assert 24)
|
|
(old-status uint16 :offset-assert 28)
|
|
(old-pos int32 :offset-assert 32)
|
|
(good-time time-frame :offset-assert 40)
|
|
(old-time time-frame :offset-assert 48)
|
|
(good-count int32 :offset-assert 56)
|
|
(sid sound-id :offset-assert 60)
|
|
(real-start-time time-frame :offset-assert 64)
|
|
(paused? symbol :offset-assert 72)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x4c
|
|
:flag-assert #x90000004c
|
|
(:methods
|
|
(new (symbol type art-joint-anim (function process-drawable symbol)) _type_ 0)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type spooler-block
|
|
(defmethod inspect spooler-block ((obj spooler-block))
|
|
(when (not obj)
|
|
(set! obj obj)
|
|
(goto cfg-4)
|
|
)
|
|
(format #t "[~8x] ~A~%" obj (-> obj type))
|
|
(format #t "~1Tanim: ~A~%" (-> obj anim))
|
|
(format #t "~1Tidle: ~A~%" (-> obj idle))
|
|
(format #t "~1Texit: ~A~%" (-> obj exit))
|
|
(format #t "~1Tbreak-func: ~A~%" (-> obj break-func))
|
|
(format #t "~1Tpart: ~D~%" (-> obj part))
|
|
(format #t "~1Tpart-audio-start: ~f~%" (-> obj part-audio-start))
|
|
(format #t "~1Told-status: ~D~%" (-> obj old-status))
|
|
(format #t "~1Told-pos: ~D~%" (-> obj old-pos))
|
|
(format #t "~1Tgood-time: ~D~%" (-> obj good-time))
|
|
(format #t "~1Told-time: ~D~%" (-> obj old-time))
|
|
(format #t "~1Tgood-count: ~D~%" (-> obj good-count))
|
|
(format #t "~1Tsid: ~D~%" (-> obj sid))
|
|
(format #t "~1Treal-start-time: ~D~%" (-> obj real-start-time))
|
|
(format #t "~1Tpaused?: ~A~%" (-> obj paused?))
|
|
(label cfg-4)
|
|
obj
|
|
)
|
|
|
|
;; definition for function ja-play-spooled-anim
|
|
(defbehavior ja-play-spooled-anim process-drawable ((arg0 spool-anim) (arg1 art-joint-anim) (arg2 art-joint-anim) (arg3 (function process-drawable symbol)))
|
|
(local-vars (v0-59 int) (sv-176 int))
|
|
(let ((s2-0 arg2)
|
|
(s1-0 arg3)
|
|
(gp-0 (new 'stack 'spooler-block arg2 arg3))
|
|
)
|
|
(let ((s5-0 gp-0))
|
|
(set! (-> s5-0 anim) arg0)
|
|
(set! (-> s5-0 idle) arg1)
|
|
(set! (-> s5-0 exit) s2-0)
|
|
(set! (-> s5-0 break-func) s1-0)
|
|
(set! (-> s5-0 part-audio-start) -17.0)
|
|
(set! (-> s5-0 old-status) (the-as uint (-> self skel status)))
|
|
(set! (-> s5-0 old-pos) -2)
|
|
(set! (-> s5-0 sid) (new-sound-id))
|
|
(set! (-> s5-0 paused?) #f)
|
|
)
|
|
(let ((v1-7
|
|
(gui-control-method-15 *gui-control* self (gui-channel art-load) (-> gp-0 anim name) (new 'static 'sound-id))
|
|
)
|
|
)
|
|
(if v1-7
|
|
(set! (-> gp-0 sid) (-> v1-7 id))
|
|
)
|
|
)
|
|
(if (!= self *target*)
|
|
(send-event *target* 'movie)
|
|
)
|
|
(backup-load-state-and-set-cmds *load-state* (-> gp-0 anim command-list))
|
|
(logior! (-> self skel status) (joint-control-status sync-math spooling spooling-not-last-block))
|
|
(talker-surpress!)
|
|
(apply-settings *setting-control*)
|
|
(when (or (and (-> *setting-control* user-current spooling)
|
|
(or (< 2 (the-as int (-> gp-0 anim parts)))
|
|
(not (string= (-> *setting-control* user-current spool-anim name) (-> gp-0 anim name)))
|
|
)
|
|
)
|
|
(logtest? (-> *art-control* frame-mask) 28)
|
|
(!= *master-mode* 'game)
|
|
)
|
|
(cond
|
|
((-> gp-0 idle)
|
|
(when (!= (ja-group) (-> gp-0 idle))
|
|
(ja-channel-push! 1 (seconds 0.05))
|
|
(ja :group! (-> gp-0 idle) :num! min)
|
|
)
|
|
)
|
|
(else
|
|
(ja-channel-set! 0)
|
|
)
|
|
)
|
|
(while (or (and (-> *setting-control* user-current spooling)
|
|
(or (< 2 (the-as int (-> gp-0 anim parts)))
|
|
(not (string= (-> *setting-control* user-current spool-anim name) (-> gp-0 anim name)))
|
|
)
|
|
)
|
|
(logtest? (-> *art-control* frame-mask) 28)
|
|
(!= *master-mode* 'game)
|
|
)
|
|
(format #t "WARNING: ---------------------> loader stall on lock~%")
|
|
(if ((-> gp-0 break-func) self)
|
|
(goto cfg-130)
|
|
)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
-9.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(suspend)
|
|
(if (-> gp-0 idle)
|
|
(ja :num! (loop!))
|
|
)
|
|
)
|
|
)
|
|
(set-setting! 'spooling (process->ppointer self) 0 0)
|
|
(set-setting! 'spool-anim (-> gp-0 anim) 0 0)
|
|
(apply-settings *setting-control*)
|
|
(set! (-> gp-0 old-time) (-> self clock frame-counter))
|
|
(while (< (-> gp-0 part) (the-as int (-> gp-0 anim parts)))
|
|
(when (> (-> gp-0 part) 0)
|
|
(while (let ((v1-99 (file-status *art-control* (-> gp-0 anim name) (-> gp-0 part))))
|
|
(not (or (= v1-99 'active) (= v1-99 'locked)))
|
|
)
|
|
(if ((-> gp-0 break-func) self)
|
|
(goto cfg-130)
|
|
)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(+ (-> gp-0 part) -1)
|
|
-20.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
-10.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(when (and (not (-> gp-0 paused?)) (< (-> *setting-control* user-current movie-skip-frame) 0.0))
|
|
(format
|
|
#t
|
|
"WARNING: ---------------------> loader pre stall on art ~S ~D ~A~%"
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
(file-status *art-control* (-> gp-0 anim name) (-> gp-0 part))
|
|
)
|
|
(set! (-> gp-0 paused?) #t)
|
|
(if (nonzero? (-> gp-0 part))
|
|
(sound-pause (-> gp-0 sid))
|
|
)
|
|
)
|
|
(suspend)
|
|
)
|
|
)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
-20.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(update *gui-control* #f)
|
|
(update *art-control* #f)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
-20.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(when (!= (file-status *art-control* (-> gp-0 anim name) (-> gp-0 part)) 'active)
|
|
(cond
|
|
((-> gp-0 idle)
|
|
(when (!= (ja-group) (-> gp-0 idle))
|
|
(ja-channel-set! 1)
|
|
(ja :group! (-> gp-0 idle) :num! min)
|
|
)
|
|
)
|
|
(else
|
|
(ja-channel-set! 0)
|
|
)
|
|
)
|
|
(while (!= (file-status *art-control* (-> gp-0 anim name) (-> gp-0 part)) 'active)
|
|
(if ((-> gp-0 break-func) self)
|
|
(goto cfg-130)
|
|
)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
-20.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(when (not (-> gp-0 paused?))
|
|
(format
|
|
#t
|
|
"WARNING: ---------------------> loader stall on art ~S ~D ~A~%"
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
(file-status *art-control* (-> gp-0 anim name) (-> gp-0 part))
|
|
)
|
|
(set! (-> gp-0 paused?) #t)
|
|
(if (nonzero? (-> gp-0 part))
|
|
(sound-pause (-> gp-0 sid))
|
|
)
|
|
)
|
|
(suspend)
|
|
(if (-> gp-0 idle)
|
|
(ja :num! (loop!))
|
|
)
|
|
)
|
|
)
|
|
(when (-> gp-0 paused?)
|
|
(set! (-> gp-0 paused?) #f)
|
|
(sound-continue (-> gp-0 sid))
|
|
(format
|
|
#t
|
|
"WARNING: ---------------------> loader release lock on art ~S ~D ~A~%"
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
(file-status *art-control* (-> gp-0 anim name) (-> gp-0 part))
|
|
)
|
|
)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
-20.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(let ((s5-8 (get-art-by-name (-> self draw art-group) (the-as string (-> gp-0 anim buffer)) art-joint-anim)))
|
|
(cond
|
|
(s5-8
|
|
(ja-channel-set! 1)
|
|
(ja-no-eval :group! s5-8 :num! (seek! (the float (+ (-> s5-8 frames num-frames) -1))) :frame-num 0.0)
|
|
(when (zero? (-> gp-0 part))
|
|
(str-play-async (-> gp-0 anim name) (-> gp-0 sid))
|
|
(set! (-> *art-control* active-stream) (-> gp-0 anim name))
|
|
)
|
|
(let* ((f30-0 (* 0.05859375 (-> s5-8 speed)))
|
|
(f28-0 (+ (-> gp-0 part-audio-start) (/ (the float (+ (-> s5-8 frames num-frames) -1)) f30-0)))
|
|
)
|
|
(set! sv-176 (current-str-pos (-> gp-0 sid)))
|
|
(set! (-> gp-0 good-time) (-> self clock frame-counter))
|
|
(until (>= (the float v0-59) f28-0)
|
|
(if (= (-> self skel root-channel 0) (-> self skel channel))
|
|
(logior! (-> self skel status) (joint-control-status valid-spooled-frame))
|
|
)
|
|
(if (or ((-> gp-0 break-func) self)
|
|
(and (<= sv-176 0) (>= (- (-> self clock frame-counter) (-> gp-0 good-time)) (seconds 4)))
|
|
(and (< 300 (-> gp-0 good-count)) (<= sv-176 0))
|
|
)
|
|
(goto cfg-130)
|
|
)
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
-20.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(if (< (+ (-> gp-0 part) 1) (the-as int (-> gp-0 anim parts)))
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> gp-0 anim name)
|
|
(+ (-> gp-0 part) 1)
|
|
-10.0
|
|
(-> gp-0 sid)
|
|
)
|
|
(logclear! (-> self skel status) (joint-control-status spooling-not-last-block))
|
|
)
|
|
(execute-commands-up-to *load-state* (ja-aframe-num 0))
|
|
(cond
|
|
((and (< (-> gp-0 old-pos) sv-176) (< -1 sv-176))
|
|
(+! (-> gp-0 good-count) (- (-> self clock frame-counter) (-> self clock old-frame-counter)))
|
|
(set! (-> gp-0 good-time) (-> self clock frame-counter))
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
(set! (-> gp-0 old-pos) sv-176)
|
|
(set! (-> gp-0 old-time) (-> self clock frame-counter))
|
|
(suspend)
|
|
(let* ((f26-0 (* (- (the float (current-str-pos (-> gp-0 sid))) (-> gp-0 part-audio-start)) f30-0))
|
|
(f0-16 (if (str-id-is-playing? (the-as int (-> gp-0 sid)))
|
|
(fmax 0.0 (fmin f26-0 (the float (+ (-> (ja-group) frames num-frames) -1))))
|
|
(fmax 0.0 (fmin (ja-frame-num 0) (the float (+ (-> (ja-group) frames num-frames) -1))))
|
|
)
|
|
)
|
|
)
|
|
(ja-no-eval :num! (seek!) :frame-num f0-16)
|
|
)
|
|
(set! v0-59 (current-str-pos (-> gp-0 sid)))
|
|
(set! sv-176 v0-59)
|
|
)
|
|
(set! (-> gp-0 part-audio-start) f28-0)
|
|
)
|
|
(logclear! (-> self skel status) (joint-control-status valid-spooled-frame))
|
|
)
|
|
(else
|
|
(format
|
|
0
|
|
"ERROR: <asg> ~A in spool anim loop for ~A ~D, but not loaded.~"
|
|
self
|
|
(-> gp-0 anim name)
|
|
(-> gp-0 part)
|
|
)
|
|
(goto cfg-130)
|
|
)
|
|
)
|
|
)
|
|
(+! (-> gp-0 part) 1)
|
|
)
|
|
(+! (-> gp-0 part) -1)
|
|
(label cfg-130)
|
|
(ja-abort-spooled-anim (-> gp-0 anim) (-> gp-0 exit) (-> gp-0 part))
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for function ja-abort-spooled-anim
|
|
(defbehavior ja-abort-spooled-anim process-drawable ((arg0 spool-anim) (arg1 art-joint-anim) (arg2 int))
|
|
(let ((s3-0 (new 'static 'sound-id)))
|
|
(let ((v1-1
|
|
(gui-control-method-15 *gui-control* self (gui-channel art-load) (-> arg0 name) (new 'static 'sound-id))
|
|
)
|
|
)
|
|
(when v1-1
|
|
(set! s3-0 (-> v1-1 id))
|
|
(set! (-> v1-1 action) (gui-action abort))
|
|
)
|
|
)
|
|
(if (zero? s3-0)
|
|
(return (the-as int #f))
|
|
)
|
|
(str-play-stop (-> arg0 name) s3-0)
|
|
)
|
|
(restore-load-state-and-cleanup *load-state*)
|
|
(set! (-> *art-control* active-stream) #f)
|
|
(logclear! (-> self skel status) (joint-control-status spooling spooling-not-last-block))
|
|
(if (zero? (logand (-> self skel status) (joint-control-status sync-math)))
|
|
(logclear! (-> self skel status) (joint-control-status sync-math))
|
|
)
|
|
(cond
|
|
((and arg1 (>= arg2 0))
|
|
(ja-channel-push! 1 (seconds 0.03))
|
|
(set! (-> self skel root-channel 0 frame-group) arg1)
|
|
(while (!= (-> self skel root-channel 0) (-> self skel channel))
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
(-> arg0 name)
|
|
arg2
|
|
-20.0
|
|
(new 'static 'sound-id)
|
|
)
|
|
(suspend)
|
|
(ja :num! (seek!))
|
|
)
|
|
)
|
|
(else
|
|
(ja-channel-set! 0)
|
|
)
|
|
)
|
|
(remove-setting! 'spooling)
|
|
(remove-setting! 'spool-anim)
|
|
0
|
|
)
|
|
|
|
;; definition for method 3 of type gui-control
|
|
(defmethod inspect gui-control ((obj gui-control))
|
|
(format #t "[~8x] ~A~%" obj (-> obj type))
|
|
(format #t "~Tengine: ~A~%" (-> obj engine))
|
|
(let ((a2-2 (-> obj engine alive-list next0)))
|
|
(-> obj engine)
|
|
(let ((s5-0 (-> a2-2 next0)))
|
|
(while (!= a2-2 (-> obj engine alive-list-end))
|
|
(format #t "~T~T~`gui-connection`P~%" a2-2)
|
|
(set! a2-2 s5-0)
|
|
(-> obj engine)
|
|
(set! s5-0 (-> s5-0 next0))
|
|
)
|
|
)
|
|
)
|
|
obj
|
|
)
|
|
|
|
;; definition for method 2 of type gui-connection
|
|
(defmethod print gui-connection ((obj gui-connection))
|
|
(let* ((t9-0 format)
|
|
(a0-1 #t)
|
|
(a1-0 "#<gc ~12S ~2D ~6D ~6,,0f ~7S ~8S ")
|
|
(a2-0 (-> obj name))
|
|
(a3-0 (-> obj anim-part))
|
|
(t0-0 (-> obj id))
|
|
(t1-0 (-> obj priority))
|
|
(v1-0 (-> obj channel))
|
|
(t2-1 (cond
|
|
((= v1-0 (gui-channel hud-lower-left))
|
|
"hud-lower-left"
|
|
)
|
|
((= v1-0 (gui-channel citizen))
|
|
"citizen"
|
|
)
|
|
((= v1-0 (gui-channel ashelin))
|
|
"ashelin"
|
|
)
|
|
((= v1-0 (gui-channel hud-lower-left-1))
|
|
"hud-lower-left-1"
|
|
)
|
|
((= v1-0 (gui-channel message))
|
|
"message"
|
|
)
|
|
((= v1-0 (gui-channel hud-middle-left))
|
|
"hud-middle-left"
|
|
)
|
|
((= v1-0 (gui-channel hud-upper-center-2))
|
|
"hud-upper-center-2"
|
|
)
|
|
((= v1-0 (gui-channel hud-middle-right))
|
|
"hud-middle-right"
|
|
)
|
|
((= v1-0 (gui-channel subtitle))
|
|
"subtitle"
|
|
)
|
|
((= v1-0 (gui-channel notice))
|
|
"notice"
|
|
)
|
|
((= v1-0 (gui-channel voicebox))
|
|
"voicebox"
|
|
)
|
|
((= v1-0 (gui-channel art-load-next))
|
|
"art-load-next"
|
|
)
|
|
((= v1-0 (gui-channel mog))
|
|
"mog"
|
|
)
|
|
((= v1-0 (gui-channel sig))
|
|
"sig"
|
|
)
|
|
((= v1-0 (gui-channel hud-center-left))
|
|
"hud-center-left"
|
|
)
|
|
((= v1-0 (gui-channel hud-upper-right))
|
|
"hud-upper-right"
|
|
)
|
|
((= v1-0 (gui-channel hud-center-right))
|
|
"hud-center-right"
|
|
)
|
|
((= v1-0 (gui-channel alert))
|
|
"alert"
|
|
)
|
|
((= v1-0 (gui-channel jinx))
|
|
"jinx"
|
|
)
|
|
((= v1-0 (gui-channel hud-upper-left))
|
|
"hud-upper-left"
|
|
)
|
|
((= v1-0 (gui-channel query))
|
|
"query"
|
|
)
|
|
((= v1-0 (gui-channel grim))
|
|
"grim"
|
|
)
|
|
((= v1-0 (gui-channel kor))
|
|
"kor"
|
|
)
|
|
((= v1-0 (gui-channel hud-lower-right))
|
|
"hud-lower-right"
|
|
)
|
|
((= v1-0 (gui-channel screen))
|
|
"screen"
|
|
)
|
|
((= v1-0 (gui-channel guard))
|
|
"guard"
|
|
)
|
|
((= v1-0 (gui-channel supertitle))
|
|
"supertitle"
|
|
)
|
|
((= v1-0 (gui-channel hal))
|
|
"hal"
|
|
)
|
|
((= v1-0 (gui-channel hud-upper-center))
|
|
"hud-upper-center"
|
|
)
|
|
((= v1-0 (gui-channel blackout))
|
|
"blackout"
|
|
)
|
|
((= v1-0 (gui-channel bbush))
|
|
"bbush"
|
|
)
|
|
((= v1-0 (gui-channel hud))
|
|
"hud"
|
|
)
|
|
((= v1-0 (gui-channel voice))
|
|
"voice"
|
|
)
|
|
((= v1-0 (gui-channel max))
|
|
"max"
|
|
)
|
|
((= v1-0 (gui-channel none))
|
|
"none"
|
|
)
|
|
((= v1-0 (gui-channel notice-low))
|
|
"notice-low"
|
|
)
|
|
((= v1-0 (gui-channel art-load))
|
|
"art-load"
|
|
)
|
|
((= v1-0 (gui-channel kid))
|
|
"kid"
|
|
)
|
|
((= v1-0 (gui-channel jak))
|
|
"jak"
|
|
)
|
|
((= v1-0 (gui-channel daxter))
|
|
"daxter"
|
|
)
|
|
((= v1-0 (gui-channel krew))
|
|
"krew"
|
|
)
|
|
((= v1-0 (gui-channel hud-lower-left-2))
|
|
"hud-lower-left-2"
|
|
)
|
|
((= v1-0 (gui-channel background))
|
|
"background"
|
|
)
|
|
((= v1-0 (gui-channel crocadog))
|
|
"crocadog"
|
|
)
|
|
((= v1-0 (gui-channel movie))
|
|
"movie"
|
|
)
|
|
(else
|
|
"*unknown*"
|
|
)
|
|
)
|
|
)
|
|
(v1-1 (-> obj action))
|
|
)
|
|
(t9-0 a0-1 a1-0 a2-0 a3-0 t0-0 t1-0 t2-1 (cond
|
|
((= v1-1 (gui-action queue))
|
|
"queue"
|
|
)
|
|
((= v1-1 (gui-action stop))
|
|
"stop"
|
|
)
|
|
((= v1-1 (gui-action play))
|
|
"play"
|
|
)
|
|
((= v1-1 (gui-action hide))
|
|
"hide"
|
|
)
|
|
((= v1-1 (gui-action fade))
|
|
"fade"
|
|
)
|
|
((= v1-1 (gui-action none))
|
|
"none"
|
|
)
|
|
((= v1-1 (gui-action abort))
|
|
"abort"
|
|
)
|
|
((= v1-1 (gui-action stopping))
|
|
"stopping"
|
|
)
|
|
((= v1-1 (gui-action hidden))
|
|
"hidden"
|
|
)
|
|
((= v1-1 (gui-action playing))
|
|
"playing"
|
|
)
|
|
(else
|
|
"*unknown*"
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((s5-0 format)
|
|
(s4-0 #t)
|
|
(s3-0 " ~6S <@ #x~A>")
|
|
(v1-3 (gui-control-method-17 *gui-control* (-> obj id)))
|
|
)
|
|
(s5-0
|
|
s4-0
|
|
s3-0
|
|
(cond
|
|
((= v1-3 (gui-action play))
|
|
"ready"
|
|
)
|
|
((= v1-3 (gui-action playing))
|
|
"active"
|
|
)
|
|
((= v1-3 (gui-action stopping))
|
|
"stop"
|
|
)
|
|
((= v1-3 (gui-action none))
|
|
"unknown"
|
|
)
|
|
((= v1-3 (gui-action stop))
|
|
"hide"
|
|
)
|
|
((= v1-3 (gui-action queue))
|
|
"pending"
|
|
)
|
|
(else
|
|
"*unknown*"
|
|
)
|
|
)
|
|
obj
|
|
)
|
|
)
|
|
obj
|
|
)
|
|
|
|
;; definition for method 24 of type gui-control
|
|
(defmethod channel-id-set! gui-control ((obj gui-control) (arg0 gui-connection) (arg1 sound-id))
|
|
(set! (-> obj ids (-> arg0 channel)) arg1)
|
|
0
|
|
)
|
|
|
|
;; definition for method 15 of type gui-control
|
|
(defmethod gui-control-method-15 gui-control ((obj gui-control) (arg0 process) (arg1 gui-channel) (arg2 string) (arg3 sound-id))
|
|
(let ((s1-0 (the-as gui-connection (-> obj engine alive-list next0))))
|
|
(-> obj engine)
|
|
(let ((s0-0 (-> s1-0 next0)))
|
|
(while (!= s1-0 (-> obj engine alive-list-end))
|
|
(if (and (or (= arg1 (gui-channel none)) (= (-> s1-0 channel) arg1))
|
|
(or (not arg0) (= (-> arg0 type) scene-player) (= arg0 (get-process s1-0)))
|
|
(or (not arg2) (string= arg2 (-> s1-0 name)))
|
|
(or (zero? arg3) (= (-> s1-0 id) arg3))
|
|
)
|
|
(return s1-0)
|
|
)
|
|
(set! s1-0 (the-as gui-connection s0-0))
|
|
(-> obj engine)
|
|
(set! s0-0 (-> s0-0 next0))
|
|
)
|
|
)
|
|
)
|
|
(countdown (s1-1 32)
|
|
(let ((s0-1 (-> obj connections s1-1)))
|
|
(if (and (nonzero? (-> s0-1 id))
|
|
(or (= arg1 (gui-channel none)) (= (-> s0-1 channel) arg1))
|
|
(and (or (not arg0) (= (-> arg0 type) scene-player) (= arg0 (handle->process (-> s0-1 handle))))
|
|
(or (not arg2) (string= arg2 (-> s0-1 name)))
|
|
(or (zero? arg3) (= (-> s0-1 id) arg3))
|
|
)
|
|
)
|
|
(return s0-1)
|
|
)
|
|
)
|
|
)
|
|
(the-as gui-connection #f)
|
|
)
|
|
|
|
;; definition for method 14 of type gui-control
|
|
(defmethod gui-control-method-14 gui-control ((obj gui-control) (arg0 string) (arg1 gui-channel) (arg2 gui-action))
|
|
(let ((s2-0 (the-as gui-connection (-> obj engine alive-list next0))))
|
|
(-> obj engine)
|
|
(let ((s1-0 (-> s2-0 next0)))
|
|
(while (!= s2-0 (-> obj engine alive-list-end))
|
|
(if (and (or (= arg1 (gui-channel none)) (= arg1 (-> s2-0 channel)))
|
|
(or (= arg2 (gui-action none)) (= arg2 (-> s2-0 action)))
|
|
(or (not arg0) (string= arg0 (-> s2-0 name)))
|
|
)
|
|
(return (the-as int (-> s2-0 id)))
|
|
)
|
|
(set! s2-0 (the-as gui-connection s1-0))
|
|
(-> obj engine)
|
|
(set! s1-0 (-> s1-0 next0))
|
|
)
|
|
)
|
|
)
|
|
(countdown (s2-1 32)
|
|
(let ((s1-1 (-> obj connections s2-1)))
|
|
(if (and (nonzero? (-> s1-1 id))
|
|
(or (= arg1 (gui-channel none)) (= arg1 (-> s1-1 channel)))
|
|
(or (= arg2 (gui-action none)) (= arg2 (-> s1-1 action)))
|
|
(or (not arg0) (string= arg0 (-> s1-1 name)))
|
|
)
|
|
(return (the-as int (-> s1-1 id)))
|
|
)
|
|
)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 20 of type gui-control
|
|
(defmethod gui-control-method-20 gui-control ((obj gui-control) (arg0 sound-id) (arg1 symbol) (arg2 int) (arg3 int) (arg4 int))
|
|
(when (nonzero? arg0)
|
|
(let ((v1-2 (gui-control-method-15 *gui-control* (the-as process #f) (gui-channel none) (the-as string #f) arg0)))
|
|
(when v1-2
|
|
(if arg1
|
|
(logior! (-> v1-2 flags) 2)
|
|
)
|
|
(when (>= arg2 0)
|
|
(logior! (-> v1-2 flags) 8)
|
|
(set! (-> v1-2 fo-min) arg2)
|
|
)
|
|
(when (>= arg3 0)
|
|
(logior! (-> v1-2 flags) 16)
|
|
(set! (-> v1-2 fo-max) arg3)
|
|
)
|
|
(when (>= arg4 0)
|
|
(logior! (-> v1-2 flags) 4)
|
|
(set! (-> v1-2 fo-curve) arg4)
|
|
)
|
|
v1-2
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 18 of type gui-control
|
|
;; WARN: Return type mismatch object vs symbol.
|
|
;; WARN: disable def twice: 34. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare.
|
|
(defmethod gui-control-method-18 gui-control ((obj gui-control) (arg0 gui-channel))
|
|
(let ((v1-0 arg0))
|
|
(the-as
|
|
symbol
|
|
(cond
|
|
((or (= v1-0 (gui-channel message)) (= v1-0 (gui-channel notice)) (= v1-0 (gui-channel notice-low)))
|
|
(not (or (logtest? (-> *art-control* frame-mask) 28) (!= *master-mode* 'game)))
|
|
)
|
|
((= v1-0 (gui-channel query))
|
|
(and (not (or (logtest? (-> *art-control* frame-mask) 28) (!= *master-mode* 'game)))
|
|
(and *target* (zero? (logand (-> *target* focus-status) (focus-status fs1 fs6))))
|
|
)
|
|
)
|
|
(else
|
|
#t
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 23 of type gui-control
|
|
(defmethod gui-control-method-23 gui-control ((obj gui-control) (arg0 gui-channel) (arg1 gui-channel) (arg2 symbol) (arg3 gui-connection))
|
|
(let ((s5-0 (-> obj ids arg1)))
|
|
(cond
|
|
((nonzero? s5-0)
|
|
(case arg2
|
|
(('wait)
|
|
(if (nonzero? (gui-control-method-17 obj s5-0))
|
|
(return #f)
|
|
)
|
|
)
|
|
(('stop 'priority-stop)
|
|
(when (nonzero? (-> obj ids arg1))
|
|
(let ((s2-0 (gui-control-method-15 obj (the-as process #f) arg1 (the-as string #f) s5-0)))
|
|
(when (and s2-0 (or (= arg2 'priority) (= s2-0 arg3) (and arg3 (< (-> arg3 priority) (-> s2-0 priority)))))
|
|
(gui-control-method-11 obj s2-0)
|
|
(cond
|
|
((= (shr (the-as int arg1) 4) 5)
|
|
(set! (-> obj times arg1)
|
|
(the-as time-frame (max (-> obj times arg1) (+ (-> *display* base-clock frame-counter) (seconds 0.1))))
|
|
)
|
|
(set! (-> s2-0 action) (gui-action hidden))
|
|
)
|
|
((= arg1 (gui-channel query))
|
|
(set! (-> s2-0 action) (gui-action play))
|
|
)
|
|
(else
|
|
(set! (-> s2-0 action) (gui-action hidden))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(if (nonzero? (gui-control-method-17 obj s5-0))
|
|
(return #f)
|
|
)
|
|
)
|
|
(('hide)
|
|
(let ((v1-34 (gui-control-method-15 obj (the-as process #f) arg1 (the-as string #f) s5-0)))
|
|
(when (and v1-34 (!= (-> v1-34 action) 8))
|
|
(gui-control-method-16
|
|
obj
|
|
(gui-action hide)
|
|
s5-0
|
|
(gui-channel none)
|
|
(gui-action none)
|
|
(the-as string #f)
|
|
(the-as (function gui-connection symbol) #f)
|
|
(the-as process #f)
|
|
)
|
|
(set! (-> obj times arg1)
|
|
(the-as time-frame (max (-> obj times arg1) (+ (-> *display* base-clock frame-counter) (seconds 0.1))))
|
|
)
|
|
)
|
|
)
|
|
(if (nonzero? (gui-control-method-17 obj s5-0))
|
|
(return #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((< (-> *display* base-clock frame-counter) (-> obj times arg1))
|
|
(if (= arg2 'wait)
|
|
(return #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
#t
|
|
)
|
|
|
|
;; definition for method 19 of type gui-control
|
|
;; INFO: Used lq/sq
|
|
(defmethod gui-control-method-19 gui-control ((obj gui-control) (arg0 gui-channel) (arg1 gui-connection))
|
|
(local-vars (sv-16 int) (sv-32 int) (sv-48 int))
|
|
(let ((gp-0 #t))
|
|
(cond
|
|
((or (not (gui-control-method-18 obj arg0)) (< (-> *display* base-clock frame-counter) (-> obj times arg0)))
|
|
#f
|
|
)
|
|
((not (null? (-> obj cmd arg0)))
|
|
(let* ((s2-0 (-> obj cmd arg0))
|
|
(v1-9 (car s2-0))
|
|
)
|
|
(while (not (null? s2-0))
|
|
(let ((a2-1 (the-as gui-channel (/ (the-as int (car v1-9)) 8)))
|
|
(s1-0 (cdr v1-9))
|
|
)
|
|
(case a2-1
|
|
(((gui-channel hud))
|
|
(let ((s0-0 80))
|
|
(set! sv-16 90)
|
|
(while (>= (the-as uint sv-16) (the-as uint s0-0))
|
|
(if (not (gui-control-method-23 obj arg0 (the-as gui-channel s0-0) (the-as symbol s1-0) arg1))
|
|
(set! gp-0 #f)
|
|
)
|
|
(+! s0-0 1)
|
|
)
|
|
)
|
|
)
|
|
(((gui-channel screen))
|
|
(let ((s0-1 66))
|
|
(set! sv-32 70)
|
|
(while (>= (the-as uint sv-32) (the-as uint s0-1))
|
|
(if (not (gui-control-method-23 obj arg0 (the-as gui-channel s0-1) (the-as symbol s1-0) arg1))
|
|
(set! gp-0 #f)
|
|
)
|
|
(+! s0-1 1)
|
|
)
|
|
)
|
|
)
|
|
(((gui-channel voice))
|
|
(let ((s0-2 18))
|
|
(set! sv-48 32)
|
|
(while (>= (the-as uint sv-48) (the-as uint s0-2))
|
|
(if (not (gui-control-method-23 obj arg0 (the-as gui-channel s0-2) (the-as symbol s1-0) arg1))
|
|
(set! gp-0 #f)
|
|
)
|
|
(+! s0-2 1)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(if (not (gui-control-method-23 obj arg0 a2-1 (the-as symbol s1-0) arg1))
|
|
(set! gp-0 #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! s2-0 (cdr s2-0))
|
|
(set! v1-9 (car s2-0))
|
|
)
|
|
)
|
|
gp-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 17 of type gui-control
|
|
;; WARN: Return type mismatch int vs gui-action.
|
|
(defmethod gui-control-method-17 gui-control ((obj gui-control) (arg0 sound-id))
|
|
(let ((gp-0 (the-as gui-connection #f)))
|
|
(if (zero? arg0)
|
|
(return (gui-action none))
|
|
)
|
|
(let ((v1-4 (-> obj engine alive-list next0)))
|
|
(-> obj engine)
|
|
(let ((a0-3 (-> v1-4 next0)))
|
|
(while (!= v1-4 (-> obj engine alive-list-end))
|
|
(when (= arg0 (-> (the-as gui-connection v1-4) id))
|
|
(set! gp-0 (the-as gui-connection v1-4))
|
|
(goto cfg-15)
|
|
)
|
|
(set! v1-4 a0-3)
|
|
(-> obj engine)
|
|
(set! a0-3 (-> a0-3 next0))
|
|
)
|
|
)
|
|
)
|
|
#t
|
|
(countdown (v1-10 32)
|
|
(let ((a0-7 (-> obj connections v1-10)))
|
|
(when (= arg0 (-> a0-7 id))
|
|
(set! gp-0 a0-7)
|
|
(goto cfg-15)
|
|
)
|
|
)
|
|
)
|
|
(label cfg-15)
|
|
(the-as
|
|
gui-action
|
|
(cond
|
|
((= (-> gp-0 channel) (gui-channel movie))
|
|
(cond
|
|
((= (-> gp-0 id) (-> obj ids (-> gp-0 channel)))
|
|
3
|
|
)
|
|
((gui-control-method-19 obj (-> gp-0 channel) gp-0)
|
|
2
|
|
)
|
|
(else
|
|
1
|
|
)
|
|
)
|
|
)
|
|
((let ((v1-22 (shr (the-as int (-> gp-0 channel)) 4)))
|
|
(or (= v1-22 1) (= v1-22 2))
|
|
)
|
|
(case (-> gp-0 action)
|
|
(((gui-action queue) (gui-action play) (gui-action playing) (gui-action fade) (gui-action stop))
|
|
(cond
|
|
(gp-0
|
|
(dotimes (s4-0 4)
|
|
(when (and (string-charp= (-> gp-0 name) (the-as (pointer uint8) (-> *sound-iop-info* stream-name s4-0)))
|
|
(or (= (-> gp-0 id) (-> *sound-iop-info* stream-id s4-0)) (zero? (-> *sound-iop-info* stream-id s4-0)))
|
|
(logtest? (-> *sound-iop-info* stream-status s4-0) (stream-status ststatus-one ststatus-six))
|
|
(if (and (>= (the-as uint (-> gp-0 channel)) (the-as uint 16))
|
|
(>= (the-as uint 17) (the-as uint (-> gp-0 channel)))
|
|
)
|
|
(= (file-status *art-control* (-> gp-0 name) (the-as int (-> gp-0 anim-part))) 'active)
|
|
#t
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (-> *sound-iop-info* stream-status s4-0) (stream-status ststatus-four))
|
|
(return (gui-action playing))
|
|
)
|
|
((logtest? (-> *sound-iop-info* stream-status s4-0) (stream-status ststatus-nine))
|
|
(return (gui-action stopping))
|
|
)
|
|
((or (= (-> gp-0 id) (-> obj ids (-> gp-0 channel))) (gui-control-method-19 obj (-> gp-0 channel) gp-0))
|
|
(return (gui-action play))
|
|
)
|
|
(else
|
|
(return (gui-action queue))
|
|
)
|
|
)
|
|
(the-as none 0)
|
|
)
|
|
)
|
|
1
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
)
|
|
((= (shr (the-as int (-> gp-0 channel)) 4) 5)
|
|
(cond
|
|
((= (-> gp-0 id) (-> obj ids (-> gp-0 channel)))
|
|
(if (or (= (-> gp-0 action) (gui-action hide)) (= (-> gp-0 action) (gui-action hidden)))
|
|
4
|
|
3
|
|
)
|
|
)
|
|
((gui-control-method-19 obj (-> gp-0 channel) gp-0)
|
|
2
|
|
)
|
|
(else
|
|
1
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(case (shr (the-as int (-> gp-0 channel)) 4)
|
|
((4 5)
|
|
(cond
|
|
((= (-> gp-0 id) (-> obj ids (-> gp-0 channel)))
|
|
3
|
|
)
|
|
((gui-control-method-19 obj (-> gp-0 channel) gp-0)
|
|
2
|
|
)
|
|
(else
|
|
1
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 16 of type gui-control
|
|
(defmethod gui-control-method-16 gui-control ((obj gui-control)
|
|
(arg0 gui-action)
|
|
(arg1 sound-id)
|
|
(arg2 gui-channel)
|
|
(arg3 gui-action)
|
|
(arg4 string)
|
|
(arg5 (function gui-connection symbol))
|
|
(arg6 process)
|
|
)
|
|
(local-vars (sv-16 gui-action) (sv-17 gui-action) (sv-20 string) (sv-24 (function gui-connection symbol)))
|
|
(set! sv-16 arg0)
|
|
(set! sv-17 arg3)
|
|
(set! sv-20 arg4)
|
|
(set! sv-24 arg5)
|
|
(let ((s1-0 (the-as gui-connection (-> obj engine alive-list next0))))
|
|
(-> obj engine)
|
|
(let ((s0-0 (-> s1-0 next0)))
|
|
(while (!= s1-0 (-> obj engine alive-list-end))
|
|
(when (and (or (= arg1 1) (= arg1 (-> s1-0 id)))
|
|
(or (= arg2 (gui-channel none)) (= arg2 (-> s1-0 channel)))
|
|
(or (= sv-17 (gui-action none)) (= sv-17 (-> s1-0 action)))
|
|
(or (not sv-20) (string= sv-20 (-> s1-0 name)))
|
|
(or (not arg5) (arg5 s1-0))
|
|
(or (not arg6) (= arg6 (get-process s1-0)))
|
|
)
|
|
(cond
|
|
((and (= sv-16 (gui-action hide)) (!= (-> obj ids (-> s1-0 channel)) (-> s1-0 id)))
|
|
(set! (-> s1-0 action) (gui-action hidden))
|
|
)
|
|
((and (= sv-16 (gui-action play)) (= (-> s1-0 action) (gui-action playing)))
|
|
)
|
|
(else
|
|
(set! (-> s1-0 action) sv-16)
|
|
(if (and (= sv-16 'play) (gui-control-method-19 obj (-> s1-0 channel) s1-0))
|
|
(channel-id-set! obj s1-0 (-> s1-0 id))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! s1-0 (the-as gui-connection s0-0))
|
|
(-> obj engine)
|
|
(set! s0-0 (-> s0-0 next0))
|
|
)
|
|
)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 9 of type gui-control
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs sound-id.
|
|
(defmethod gui-control-method-9 gui-control ((obj gui-control)
|
|
(arg0 process)
|
|
(arg1 gui-channel)
|
|
(arg2 gui-action)
|
|
(arg3 string)
|
|
(arg4 float)
|
|
(arg5 time-frame)
|
|
)
|
|
(local-vars
|
|
(sv-16 int)
|
|
(sv-20 gui-connection)
|
|
(sv-32 gui-connection)
|
|
(sv-48 gui-connection)
|
|
(sv-64 gui-connection)
|
|
(sv-80 int)
|
|
)
|
|
(set! sv-32 (the-as gui-connection #f))
|
|
(set! sv-48 (the-as gui-connection (-> obj engine alive-list next0)))
|
|
(-> obj engine)
|
|
(set! sv-64 (the-as gui-connection (-> sv-48 next0)))
|
|
(while (!= sv-48 (-> obj engine alive-list-end))
|
|
(when (and (= arg1 (-> (the-as gui-connection sv-48) channel))
|
|
(string= arg3 (-> (the-as gui-connection sv-48) name))
|
|
(= (get-process sv-48) arg0)
|
|
)
|
|
(set! sv-32 (the-as gui-connection sv-48))
|
|
(goto cfg-12)
|
|
)
|
|
(set! sv-48 (the-as gui-connection sv-64))
|
|
(-> obj engine)
|
|
(set! sv-64 (the-as gui-connection (-> sv-64 next0)))
|
|
)
|
|
(label cfg-12)
|
|
(when (not sv-32)
|
|
(set! sv-16 0)
|
|
(set! sv-80 32)
|
|
(while (nonzero? sv-80)
|
|
(set! sv-80 (+ sv-80 -1))
|
|
(set! sv-20 (-> obj connections sv-80))
|
|
(if (and (nonzero? (-> sv-20 id))
|
|
(= arg1 (-> sv-20 channel))
|
|
(string= arg3 (-> sv-20 name))
|
|
(>= (-> sv-20 priority) -1.0)
|
|
)
|
|
(set! sv-16 (the-as int (-> sv-20 id)))
|
|
)
|
|
)
|
|
(if (zero? sv-16)
|
|
(set! sv-16 (the-as int (new-sound-id)))
|
|
)
|
|
(set! sv-32 (the-as gui-connection (add-connection (-> obj engine) arg0 arg4 0 arg3 sv-16)))
|
|
sv-32
|
|
)
|
|
(the-as sound-id (cond
|
|
(sv-32
|
|
(set! (-> sv-32 priority) arg4)
|
|
(set! (-> sv-32 channel) arg1)
|
|
(set! (-> sv-32 action) arg2)
|
|
(set! (-> sv-32 param2) (the-as int arg3))
|
|
(set! (-> sv-32 hold-time) arg5)
|
|
(set! (-> sv-32 flags) (the-as uint 1))
|
|
(set! (-> sv-32 fade) (the-as uint 0))
|
|
(the-as int (-> (the-as gui-connection sv-32) id))
|
|
)
|
|
(else
|
|
(format 0 "ERROR: could not connection ~A to gui engine.~%" arg0)
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type gui-control
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod gui-control-method-10 gui-control ((obj gui-control) (arg0 process) (arg1 gui-channel))
|
|
(let ((s3-0 (the-as gui-connection (-> obj engine alive-list next0))))
|
|
(-> obj engine)
|
|
(let ((s2-0 (-> s3-0 next0)))
|
|
(while (!= s3-0 (-> obj engine alive-list-end))
|
|
(if (and (= arg1 (-> s3-0 channel)) (= arg0 (get-process s3-0)))
|
|
(move-to-dead s3-0)
|
|
)
|
|
(set! s3-0 (the-as gui-connection s2-0))
|
|
(-> obj engine)
|
|
(set! s2-0 (-> s2-0 next0))
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 12 of type gui-control
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs sound-id.
|
|
(defmethod gui-control-method-12 gui-control ((obj gui-control)
|
|
(arg0 process)
|
|
(arg1 gui-channel)
|
|
(arg2 gui-action)
|
|
(arg3 string)
|
|
(arg4 int)
|
|
(arg5 float)
|
|
(arg6 sound-id)
|
|
)
|
|
(local-vars
|
|
(sv-16 gui-connection)
|
|
(sv-20 int)
|
|
(sv-24 gui-connection)
|
|
(sv-28 process-drawable)
|
|
(sv-32 int)
|
|
(sv-48 sound-id)
|
|
)
|
|
(set! sv-48 arg6)
|
|
(set! sv-16 (the-as gui-connection #f))
|
|
(set! sv-20 0)
|
|
(set! sv-32 32)
|
|
(while (nonzero? sv-32)
|
|
(set! sv-32 (+ sv-32 -1))
|
|
(set! sv-24 (-> obj connections sv-32))
|
|
(when (and (nonzero? (-> sv-24 id))
|
|
(= arg1 (-> sv-24 channel))
|
|
(let ((v1-14 (handle->process (-> sv-24 handle))))
|
|
(and (or (= v1-14 arg0) (= (-> arg0 type) scene-player) (and v1-14 (= (-> v1-14 type) scene-player)))
|
|
(and (string= arg3 (-> sv-24 name)) (= arg4 (-> sv-24 anim-part)))
|
|
)
|
|
)
|
|
)
|
|
(when (< (-> sv-24 priority) arg5)
|
|
(set! (-> sv-24 time-stamp) (-> obj update-time))
|
|
(return (the-as sound-id (-> sv-24 id)))
|
|
)
|
|
(set! sv-16 sv-24)
|
|
(goto cfg-44)
|
|
)
|
|
)
|
|
(countdown (v1-33 32)
|
|
(let ((a0-15 (-> obj connections v1-33)))
|
|
(when (or (zero? (-> a0-15 id)) (not (handle->process (-> a0-15 handle))))
|
|
(set! sv-16 a0-15)
|
|
(set! (-> sv-16 param3) 0)
|
|
(set! (-> sv-16 flags) (the-as uint 0))
|
|
(goto cfg-44)
|
|
)
|
|
)
|
|
)
|
|
(label cfg-44)
|
|
(the-as sound-id (cond
|
|
(sv-16
|
|
(when (zero? (-> (the-as gui-connection sv-16) id))
|
|
(when (zero? sv-20)
|
|
(let ((v1-46 (gui-control-method-15 obj arg0 arg1 arg3 (new 'static 'sound-id))))
|
|
(if v1-46
|
|
(set! sv-20 (the-as int (-> v1-46 id)))
|
|
)
|
|
)
|
|
)
|
|
(if (zero? sv-20)
|
|
(set! sv-20 (the-as int sv-48))
|
|
)
|
|
(set! (-> sv-16 param3) (if (nonzero? sv-20)
|
|
sv-20
|
|
(the-as int (new-sound-id))
|
|
)
|
|
)
|
|
)
|
|
(when (= arg5 -99.0)
|
|
(let ((s2-1 arg0))
|
|
(set! sv-28 (if (type? s2-1 process-drawable)
|
|
(the-as process-drawable s2-1)
|
|
)
|
|
)
|
|
)
|
|
(set! arg5 (if sv-28
|
|
(vector-vector-distance (target-pos 0) (-> sv-28 root trans))
|
|
-1.0
|
|
)
|
|
)
|
|
)
|
|
(set! (-> sv-16 time-stamp) (-> obj update-time))
|
|
(set! (-> sv-16 handle) (process->handle arg0))
|
|
(set! (-> sv-16 priority) arg5)
|
|
(set! (-> sv-16 channel) arg1)
|
|
(set! (-> sv-16 action) arg2)
|
|
(set! (-> sv-16 anim-part) (the-as uint arg4))
|
|
(set! (-> sv-16 param2) (the-as int arg3))
|
|
(set! (-> sv-16 fade) (the-as uint 0))
|
|
(the-as int (-> (the-as gui-connection sv-16) id))
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 21 of type gui-control
|
|
(defmethod gui-control-method-21 gui-control ((obj gui-control) (arg0 gui-connection) (arg1 vector))
|
|
(case (shr (the-as int (-> arg0 channel)) 4)
|
|
((1 2)
|
|
(let ((s5-0 (-> obj spool-connections)))
|
|
(case (-> arg0 action)
|
|
(((gui-action queue) (gui-action play) (gui-action playing) (gui-action fade))
|
|
(let ((f30-0 (-> arg0 priority)))
|
|
(when (= f30-0 -99.0)
|
|
(let* ((s2-0 (get-process arg0))
|
|
(v1-10 (if (type? s2-0 process-drawable)
|
|
(the-as process-drawable s2-0)
|
|
)
|
|
)
|
|
)
|
|
(set! f30-0 (cond
|
|
((= (-> arg0 id) (-> obj ids (-> arg0 channel)))
|
|
-1.0
|
|
)
|
|
(v1-10
|
|
(vector-vector-distance arg1 (-> v1-10 root trans))
|
|
)
|
|
(else
|
|
-1.0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(dotimes (s4-1 4)
|
|
(cond
|
|
((>= (-> s5-0 s4-1 priority) f30-0)
|
|
(let ((s3-1 s4-1))
|
|
(while (< s3-1 4)
|
|
(when (= (-> s5-0 s3-1 id) (-> arg0 id))
|
|
(let ((s2-1 s3-1))
|
|
(while (< s2-1 3)
|
|
(mem-copy! (the-as pointer (-> s5-0 s2-1)) (the-as pointer (-> s5-0 (+ s2-1 1))) 48)
|
|
(+! s2-1 1)
|
|
)
|
|
)
|
|
(set! (-> s5-0 3 param2) (the-as int ""))
|
|
(set! (-> s5-0 3 priority) 100000000.0)
|
|
)
|
|
(+! s3-1 1)
|
|
)
|
|
)
|
|
(let ((s3-2 3))
|
|
(while (!= s3-2 s4-1)
|
|
(mem-copy! (the-as pointer (-> s5-0 s3-2)) (the-as pointer (-> s5-0 (+ s3-2 -1))) 48)
|
|
(+! s3-2 -1)
|
|
)
|
|
)
|
|
(mem-copy! (the-as pointer (-> s5-0 s4-1)) (the-as pointer arg0) 48)
|
|
(set! (-> s5-0 s4-1 priority) f30-0)
|
|
(goto cfg-42)
|
|
)
|
|
((= (-> s5-0 s4-1 id) (-> arg0 id))
|
|
(goto cfg-42)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(label cfg-42)
|
|
0
|
|
)
|
|
|
|
;; definition for method 11 of type gui-control
|
|
(defmethod gui-control-method-11 gui-control ((obj gui-control) (arg0 gui-connection))
|
|
(case (shr (the-as int (-> arg0 channel)) 4)
|
|
((1 2)
|
|
(if (= (gui-control-method-17 obj (-> arg0 id)) (gui-action playing))
|
|
(str-play-stop (-> arg0 name) (-> arg0 id))
|
|
)
|
|
)
|
|
)
|
|
(if (= (-> obj ids (-> arg0 channel)) (-> arg0 id))
|
|
(channel-id-set! obj arg0 (new 'static 'sound-id))
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 22 of type gui-control
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for method 13 of type gui-control
|
|
(defmethod update gui-control ((obj gui-control) (arg0 symbol))
|
|
(set! (-> obj ids 65)
|
|
(the-as sound-id (if (and (>= (-> *display* base-clock frame-counter) (-> *game-info* blackout-time))
|
|
(= (-> *setting-control* user-current bg-a) 0.0)
|
|
(= (-> *setting-control* user-current bg-a-force) 0.0)
|
|
)
|
|
0
|
|
1
|
|
)
|
|
)
|
|
)
|
|
(let ((s4-0 (target-pos 0)))
|
|
(dotimes (v1-8 4)
|
|
(set! (-> obj spool-connections v1-8 param2) (the-as int #f))
|
|
(set! (-> obj spool-connections v1-8 param3) 0)
|
|
(set! (-> obj spool-connections v1-8 priority) 100000000.0)
|
|
)
|
|
(let ((s3-0 (the-as gui-connection (-> obj engine alive-list next0))))
|
|
(-> obj engine)
|
|
(let ((s2-0 (-> s3-0 next0)))
|
|
(while (!= s3-0 (-> obj engine alive-list-end))
|
|
(gui-control-method-21 obj s3-0 s4-0)
|
|
(case (-> s3-0 action)
|
|
(((gui-action playing))
|
|
(channel-id-set! obj s3-0 (-> s3-0 id))
|
|
)
|
|
)
|
|
(set! s3-0 (the-as gui-connection s2-0))
|
|
(-> obj engine)
|
|
(set! s2-0 (-> s2-0 next0))
|
|
)
|
|
)
|
|
)
|
|
(let ((s3-1 (-> obj update-time)))
|
|
(countdown (s2-1 32)
|
|
(let ((s1-0 (-> obj connections s2-1)))
|
|
(when (nonzero? (-> s1-0 id))
|
|
(cond
|
|
((= (-> s1-0 time-stamp) s3-1)
|
|
(gui-control-method-21 obj s1-0 s4-0)
|
|
)
|
|
(else
|
|
(if (= (-> obj ids (-> s1-0 channel)) (-> s1-0 id))
|
|
(channel-id-set! obj s1-0 (new 'static 'sound-id))
|
|
)
|
|
(set! (-> s1-0 param3) 0)
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((s4-1 (new 'stack-no-clear 'array 'sound-id 4))
|
|
(s3-2 0)
|
|
)
|
|
(let ((s2-2 (-> *setting-control* user-current movie-name)))
|
|
(dotimes (s1-1 4)
|
|
(set! (-> s4-1 s1-1) (-> obj spool-connections s1-1 id))
|
|
(when (and (-> obj spool-connections s1-1 name) (case (-> obj spool-connections s1-1 channel)
|
|
(((gui-channel art-load) (gui-channel art-load-next))
|
|
#t
|
|
)
|
|
)
|
|
)
|
|
(set! s3-2 (logior s3-2 (ash 1 s1-1)))
|
|
(if (and s2-2 (string= (-> obj spool-connections s1-1 name) (the-as string s2-2)))
|
|
(set! s3-2 (logior s3-2 (ash 1 (+ s1-1 4))))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let* ((t9-6 str-play-queue)
|
|
(v1-69 (-> obj spool-connections 0 name))
|
|
(a0-32 (if v1-69
|
|
v1-69
|
|
)
|
|
)
|
|
(v1-70 (-> obj spool-connections 1 name))
|
|
(a1-7 (if v1-70
|
|
v1-70
|
|
)
|
|
)
|
|
(v1-71 (-> obj spool-connections 2 name))
|
|
(a2-4 (if v1-71
|
|
v1-71
|
|
)
|
|
)
|
|
(v1-72 (-> obj spool-connections 3 name))
|
|
)
|
|
(t9-6
|
|
a0-32
|
|
a1-7
|
|
a2-4
|
|
(if v1-72
|
|
v1-72
|
|
)
|
|
s4-1
|
|
(the-as pointer s3-2)
|
|
)
|
|
)
|
|
)
|
|
(-> obj engine)
|
|
(let ((a0-33 (the-as connection (-> obj engine alive-list-end prev0))))
|
|
(-> obj engine)
|
|
(let ((s4-2 (-> a0-33 prev0)))
|
|
(while (!= a0-33 (-> obj engine alive-list))
|
|
(gui-control-method-22 obj (the-as gui-connection a0-33) (get-process a0-33) #t)
|
|
(set! a0-33 (the-as connection s4-2))
|
|
(-> obj engine)
|
|
(set! s4-2 (-> s4-2 prev0))
|
|
)
|
|
)
|
|
)
|
|
(countdown (s4-3 32)
|
|
(let ((v1-91 (-> obj connections s4-3)))
|
|
(if (nonzero? (-> v1-91 id))
|
|
(gui-control-method-22 obj v1-91 (handle->process (-> v1-91 handle)) #f)
|
|
)
|
|
)
|
|
)
|
|
(when arg0
|
|
(when *display-art-control*
|
|
(dotimes (s5-1 4)
|
|
(let ((a3-4 (-> obj spool-connections s5-1)))
|
|
(if (-> a3-4 name)
|
|
(format *stdcon* "~D: ~`gui-connection`P~%" s5-1 a3-4)
|
|
)
|
|
)
|
|
)
|
|
(dotimes (s5-2 4)
|
|
(format
|
|
*stdcon*
|
|
"~0KCh ~D: ~8D ~5X ~6D ~G~1K~%"
|
|
s5-2
|
|
(-> *sound-iop-info* stream-id-int32 s5-2)
|
|
(-> *sound-iop-info* stream-status s5-2)
|
|
(-> *sound-iop-info* stream-position s5-2)
|
|
(-> *sound-iop-info* stream-name s5-2)
|
|
)
|
|
)
|
|
)
|
|
(when *display-gui-control*
|
|
(-> obj engine)
|
|
(let ((a2-12 (-> obj engine alive-list-end prev0)))
|
|
(-> obj engine)
|
|
(let ((s5-3 (-> a2-12 prev0)))
|
|
(while (!= a2-12 (-> obj engine alive-list))
|
|
(format *stdcon* "c: ~`gui-connection`P~%" a2-12)
|
|
(set! a2-12 s5-3)
|
|
(-> obj engine)
|
|
(set! s5-3 (-> s5-3 prev0))
|
|
)
|
|
)
|
|
)
|
|
(countdown (s5-4 32)
|
|
(let ((a2-13 (-> obj connections s5-4)))
|
|
(if (nonzero? (-> a2-13 id))
|
|
(format *stdcon* "l: ~`gui-connection`P~%" a2-13)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> obj update-time) (-> *display* base-clock frame-counter))
|
|
0
|
|
)
|
|
|
|
;; definition for method 0 of type gui-control
|
|
(defmethod new gui-control ((allocation symbol) (type-to-make type) (arg0 int))
|
|
(let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
|
(set! (-> gp-0 engine) ((method-of-type engine new) allocation engine 'gui-control arg0 gui-connection))
|
|
(dotimes (v1-3 32)
|
|
(set! (-> gp-0 connections v1-3 handle) (the-as handle #f))
|
|
)
|
|
(dotimes (v1-6 96)
|
|
(set! (-> gp-0 cmd v1-6) '())
|
|
)
|
|
(set! (-> gp-0 cmd 64) '((64 . wait) (65 . wait) (66 . stop) (95 . stop)))
|
|
(set! (-> gp-0 cmd 66)
|
|
'((64 . wait)
|
|
(65 . wait)
|
|
(68 . wait)
|
|
(71 . wait)
|
|
(67 . wait)
|
|
(66 . wait)
|
|
(69 . wait)
|
|
(83 . hide)
|
|
(84 . hide)
|
|
(85 . hide)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 67)
|
|
'((64 . wait)
|
|
(65 . wait)
|
|
(68 . wait)
|
|
(71 . wait)
|
|
(67 . wait)
|
|
(66 . wait)
|
|
(69 . wait)
|
|
(83 . hide)
|
|
(84 . hide)
|
|
(85 . hide)
|
|
(82 . hide)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 68)
|
|
'((65 . wait) (68 . wait) (67 . wait) (66 . wait) (69 . wait) (83 . hide) (84 . hide) (85 . hide) (82 . hide))
|
|
)
|
|
(set! (-> gp-0 cmd 71)
|
|
'((65 . wait) (71 . wait) (67 . wait) (66 . wait) (69 . wait) (83 . hide) (84 . hide) (85 . hide) (82 . hide))
|
|
)
|
|
(set! (-> gp-0 cmd 69) '((65 . wait) (71 . wait) (67 . wait) (66 . wait)))
|
|
(set! (-> gp-0 cmd 70) '((65 . wait) (90 . hide) (91 . hide) (81 . hide) (80 . hide)))
|
|
(set! (-> gp-0 cmd 80) '((64 . wait) (65 . wait) (80 . wait) (70 . wait)))
|
|
(set! (-> gp-0 cmd 81) '((64 . wait) (65 . wait) (81 . wait) (70 . wait)))
|
|
(set! (-> gp-0 cmd 82) '((64 . wait) (65 . wait) (67 . wait) (71 . wait) (69 . wait) (82 . wait)))
|
|
(set! (-> gp-0 cmd 83)
|
|
'((64 . wait) (65 . wait) (67 . wait) (71 . wait) (69 . wait) (66 . wait) (83 . wait) (84 . hide) (85 . hide))
|
|
)
|
|
(set! (-> gp-0 cmd 84)
|
|
'((64 . wait) (65 . wait) (67 . wait) (71 . wait) (69 . wait) (66 . wait) (83 . wait) (84 . wait))
|
|
)
|
|
(set! (-> gp-0 cmd 85)
|
|
'((64 . wait) (65 . wait) (67 . wait) (71 . wait) (69 . wait) (66 . wait) (83 . wait) (85 . wait))
|
|
)
|
|
(set! (-> gp-0 cmd 86) '((64 . wait) (65 . wait) (86 . wait)))
|
|
(set! (-> gp-0 cmd 87) '((64 . wait) (65 . wait) (87 . wait)))
|
|
(set! (-> gp-0 cmd 88) '((64 . wait) (65 . wait) (88 . wait)))
|
|
(set! (-> gp-0 cmd 89) '((64 . wait) (65 . wait) (89 . wait)))
|
|
(set! (-> gp-0 cmd 90) '((64 . wait) (65 . wait) (90 . wait) (70 . wait)))
|
|
(set! (-> gp-0 cmd 91) '((64 . wait) (65 . wait) (91 . wait) (70 . wait)))
|
|
(set! (-> gp-0 cmd 16) '((16 . wait)))
|
|
(set! (-> gp-0 cmd 17) '((17 . wait)))
|
|
(set! (-> gp-0 cmd 18) '((18 . wait)))
|
|
(set! (-> gp-0 cmd 32) '((64 . wait) (32 . wait)))
|
|
(set! (-> gp-0 cmd 30) '((64 . wait) (30 . wait)))
|
|
(set! (-> gp-0 cmd 33) '((64 . wait) (33 . wait)))
|
|
(set! (-> gp-0 cmd 34) '((64 . wait) (34 . wait)))
|
|
(set! (-> gp-0 cmd 20) '((64 . wait) (20 . wait) (19 . wait) (29 . wait)))
|
|
(set! (-> gp-0 cmd 19) '((64 . wait) (20 . wait) (19 . wait) (29 . wait)))
|
|
(set! (-> gp-0 cmd 29) '((64 . wait) (20 . wait) (19 . wait) (29 . wait)))
|
|
(set! (-> gp-0 cmd 21) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 22) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 23) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 24) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 25) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 27) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 26) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 28) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 31) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
(set! (-> gp-0 cmd 35) '((64 . wait)
|
|
(21 . wait)
|
|
(22 . wait)
|
|
(23 . wait)
|
|
(24 . wait)
|
|
(25 . wait)
|
|
(27 . wait)
|
|
(26 . wait)
|
|
(28 . wait)
|
|
(31 . wait)
|
|
(35 . wait)
|
|
)
|
|
)
|
|
gp-0
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(kmemopen global "gui-controls")
|
|
|
|
;; definition for symbol *gui-control*, type gui-control
|
|
(define *gui-control* (new 'global 'gui-control 64))
|
|
|
|
;; failed to figure out what this is:
|
|
(if (zero? *art-control*)
|
|
(set! *art-control* (new 'global 'external-art-control))
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(kmemclose)
|