some static-screen decomp fixes (#1435)

* some decomp fixes

* memcard robustness

* fix wrong bank in savefile being picked

* wtf???

* remove deleted memcard code
This commit is contained in:
ManDude
2022-06-10 18:20:00 +01:00
committed by GitHub
parent 7ce58f709f
commit 3ce301ad0d
13 changed files with 710 additions and 1380 deletions
+4 -3
View File
@@ -14637,7 +14637,7 @@
(random-mult int32 :offset 12)
(sym symbol :offset 4) ;; moved
(func symbol :offset 4)
(tex uint32 :offset 4)
(tex texture-id :offset 4)
(pntr pointer :offset 4)
;; sym used to be here
(sound sound-spec :offset 4)
@@ -25978,7 +25978,8 @@
;; - Functions
(define-extern static-screen-spawn (function int int int int int symbol target (pointer process))) ;; target may differ
(declare-type static-screen process)
(define-extern static-screen-spawn (function int texture-id texture-id texture-id time-frame symbol process-tree (pointer static-screen)))
;; ----------------------
@@ -26004,7 +26005,7 @@
;; - Functions
(define-extern static-screen-init-by-other (function int int int int time-frame symbol none :behavior static-screen))
(define-extern static-screen-init-by-other (function int texture-id texture-id texture-id time-frame symbol none :behavior static-screen))
;; ----------------------
File diff suppressed because it is too large Load Diff
+111 -168
View File
@@ -722,7 +722,7 @@
bbox
(-> target-ctrl root-prim collide-with)
(-> target-ctrl process)
(new 'static 'pat-surface :skip #x1 :noentity #x1)
(new 'static 'pat-surface :noentity #x1)
)
)
@@ -824,188 +824,131 @@
(defun target-attack-up ((arg0 target) (arg1 symbol) (arg2 symbol))
"Handle an attack up. This launches the player in the air, forcing them back to a safe location."
(with-pp
;; attempt to find a safe ground.
(let ((s4-0 (find-ground-point (-> arg0 control) (new 'stack-no-clear 'vector) 8192.0 40960.0)))
(set! s4-0 (cond
(s4-0 ;; if we found it, use that
s4-0
)
(else
;; failed to find it. Use the last known safe ground point instaed.
(-> arg0 control last-known-safe-ground)
)
;; attempt to find a safe ground.
(let ((s4-0 (find-ground-point (-> arg0 control) (new 'stack-no-clear 'vector) (meters 2) (meters 10))))
(set! s4-0 (cond
(s4-0 ;; if we found it, use that
s4-0
)
)
(let* ((s2-1 (vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans))) ;; jump direction
(f30-1 (fmax 8192.0 (fmin 40960.0 (vector-xz-length s2-1)))) ;; distance we should jump (limited)
)
;; note: the above limit is the same as the limit passed into find-ground-point. So the limiting should only kick in
;; if we use last safe ground.
(cond
((< (fabs (vector-dot
(-> arg0 control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans))
)
(else
;; failed to find it. Use the last known safe ground point instaed.
(-> arg0 control last-known-safe-ground)
)
)
)
(let* ((s2-1 (vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans))) ;; jump direction
(f30-1 (fmax (meters 2) (fmin (meters 10) (vector-xz-length s2-1)))) ;; distance we should jump (limited)
)
;; note: the above limit is the same as the limit passed into find-ground-point. So the limiting should only kick in
;; if we use last safe ground.
(cond
((< (fabs (vector-dot
(-> arg0 control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) s4-0 (-> arg0 control trans))
)
40960.0
)
(meters 10)
)
;; if we reach here, we have to jump up or down less than 10m.
;; reduce our jump direction to within reasonable distance
(vector-xz-normalize! s2-1 f30-1)
;; send an attack
;; the shove is proportional to how high we jump (and has a min, so we at least get off the ground)
(send-event
arg0
arg1
#f
(static-attack-info
((mode arg2)
(vector s2-1)
(shove-up
(+ (lerp-scale (meters 1) (meters 4) f30-1 (meters 1) (meters 10)) (fmax 0.0 (- (-> s4-0 y) (-> arg0 control trans y))))
)
(angle 'up)
)
;; if we reach here, we have to jump up or down less than 10m.
;; reduce our jump direction to within reasonable distance
(vector-xz-normalize! s2-1 f30-1)
;; send an attack
(let ((s1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> s1-0 from) pp)
(set! (-> s1-0 num-params) 2)
(set! (-> s1-0 message) arg1)
(set! (-> s1-0 param 0) (the-as uint #f))
(let ((s3-1 (new 'static 'attack-info :mask #x8a2)))
(set! (-> s3-1 mode) arg2)
;; go in the direction we determined.
(set! (-> s3-1 vector quad) (-> s2-1 quad))
;; the shove is proportional to how high we jump (and has a min, so we at least get off the ground)
(set! (-> s3-1 shove-up)
(+ (lerp-scale 4096.0 16384.0 f30-1 4096.0 40960.0) (fmax 0.0 (- (-> s4-0 y) (-> arg0 control trans y))))
)
(set! (-> s3-1 angle) 'up)
(set! (-> s1-0 param 1) (the-as uint s3-1))
)
;; shove!
(send-event-function arg0 s1-0)
)
)
(else
;; the last safest place we jumped is too high. just launch jak in the air and hope for the best.
;; fire canyon skip jumps
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) pp)
(set! (-> a1-6 num-params) 2)
(set! (-> a1-6 message) arg1)
(set! (-> a1-6 param 0) (the-as uint #f))
(let ((v1-12 (new 'static 'attack-info :mask #xca2)))
(set! (-> v1-12 mode) arg2)
(set! (-> v1-12 vector quad) (-> (new 'static 'vector :y 40960.0 :w 1.0) quad))
(set! (-> v1-12 shove-up) 40960.0)
(set! (-> v1-12 angle) 'up)
(set! (-> v1-12 control) 1.0)
(set! (-> a1-6 param 1) (the-as uint v1-12))
)
(send-event-function arg0 a1-6)
)
)
)
(else
;; the last safest place we jumped is too high. just launch jak in the air and hope for the best.
;; fire canyon skip jumps
(send-event arg0 arg1 #f (static-attack-info ((mode arg2)
(vector (new 'static 'vector :y (meters 10) :w 1.0))
(shove-up (meters 10))
(angle 'up)
(control 1.0)
)
)
)
)
)
)
(none)
)
(none)
)
(defmethod set-and-handle-pat! collide-shape-moving ((obj collide-shape-moving) (arg0 pat-surface))
"Handle landing on the given pat-surface. This is likely target-specific."
(with-pp
;; set our pat
(set! (-> obj cur-pat) arg0)
(set! (-> obj poly-pat) arg0)
;; set our surface
(case (-> arg0 material)
(((pat-material ice))
(set! (-> obj surf) *ice-surface*)
)
(((pat-material quicksand))
(set! (-> obj surf) *quicksand-surface*)
)
(((pat-material tube))
(set! (-> obj surf) *no-walk-surface*)
)
(((pat-material rotate))
(set! (-> obj surf) *rotate-surface*)
)
(else
(set! (-> obj surf) *standard-ground-surface*)
)
;; set our pat
(set! (-> obj cur-pat) arg0)
(set! (-> obj poly-pat) arg0)
;; set our surface
(case (-> arg0 material)
(((pat-material ice))
(set! (-> obj surf) *ice-surface*)
)
(((pat-material quicksand))
(set! (-> obj surf) *quicksand-surface*)
)
(((pat-material tube))
(set! (-> obj surf) *no-walk-surface*)
)
(((pat-material rotate))
(set! (-> obj surf) *rotate-surface*)
)
(else
(set! (-> obj surf) *standard-ground-surface*)
)
;; ca-9 gets set whenever you get on the zoomer. If we are on the zoomer, just go to "race-track"
(if (logtest? (-> obj root-prim prim-core action) (collide-action ca-9))
(set! (-> obj surf) *race-track-surface*)
)
(when (nonzero? (-> arg0 event))
(case (-> arg0 event)
(((pat-event deadly))
;; deadly. Send a deadly event
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) pp)
(set! (-> a1-3 num-params) 2)
(set! (-> a1-3 message) 'attack)
(set! (-> a1-3 param 0) (the-as uint #f))
(let ((v1-19 (new 'static 'attack-info :mask #xa0)))
(set! (-> v1-19 mode) 'deadly)
(set! (-> v1-19 shove-up) 12288.0)
(set! (-> a1-3 param 1) (the-as uint v1-19))
)
(send-event-function (-> obj process) a1-3)
)
)
(((pat-event burn))
;; burn. Send a burn event
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) pp)
(set! (-> a1-6 num-params) 2)
(set! (-> a1-6 message) 'attack)
(set! (-> a1-6 param 0) (the-as uint #f))
(let ((v1-23 (new 'static 'attack-info :mask #xa0)))
(set! (-> v1-23 mode) 'burn)
(set! (-> v1-23 shove-up) 12288.0)
(set! (-> a1-6 param 1) (the-as uint v1-23))
)
(send-event-function (-> obj process) a1-6)
)
)
(((pat-event deadlyup))
;; deadlyup. Launch!
(target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'deadlyup)
)
(((pat-event burnup))
;; burnup (like fire canyon lava).
;; only send if we don't have ca-9 (on zoomer)
(if (zero? (logand (-> (the-as target (-> obj process)) control root-prim prim-core action) (collide-action ca-9)))
(target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'burnup)
)
)
(((pat-event melt))
;; just send melt
(let ((a1-15 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-15 from) pp)
(set! (-> a1-15 num-params) 2)
(set! (-> a1-15 message) 'attack-invinc)
(set! (-> a1-15 param 0) (the-as uint #f))
(let ((a2-8 (new 'static 'attack-info :mask #x20)))
(set! (-> a2-8 mode) 'melt)
(set! (-> a1-15 param 1) (the-as uint a2-8))
)
(send-event-function (-> obj process) a1-15)
)
)
(((pat-event endlessfall))
;; endless pit death plane.
(let ((a1-17 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-17 from) pp)
(set! (-> a1-17 num-params) 2)
(set! (-> a1-17 message) 'attack-invinc)
(set! (-> a1-17 param 0) (the-as uint #f))
(let ((a2-9 (new 'static 'attack-info :mask #x20)))
(set! (-> a2-9 mode) 'endlessfall)
(set! (-> a1-17 param 1) (the-as uint a2-9))
)
(send-event-function (-> obj process) a1-17)
)
)
)
)
0
(none)
)
;; ca-9 gets set whenever you get on the zoomer. If we are on the zoomer, just go to "race-track"
(if (logtest? (-> obj root-prim prim-core action) (collide-action ca-9))
(set! (-> obj surf) *race-track-surface*)
)
(when (nonzero? (-> arg0 event))
(case (-> arg0 event)
(((pat-event deadly))
;; deadly. Send a deadly event
(send-event (-> obj process) 'attack #f (static-attack-info ((mode 'deadly) (shove-up (meters 3)))))
)
(((pat-event burn))
;; burn. Send a burn event
(send-event (-> obj process) 'attack #f (static-attack-info ((mode 'burn) (shove-up (meters 3)))))
)
(((pat-event deadlyup))
;; deadlyup. Launch!
(target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'deadlyup)
)
(((pat-event burnup))
;; burnup (like fire canyon lava).
;; only send if we don't have ca-9 (on zoomer)
(if (zero? (logand (-> (the-as target (-> obj process)) control root-prim prim-core action) (collide-action ca-9)))
(target-attack-up (the-as target (-> obj process)) 'attack-or-shove 'burnup)
)
)
(((pat-event melt))
;; just send melt
(send-event (-> obj process) 'attack-invinc #f (static-attack-info ((mode 'melt))))
)
(((pat-event endlessfall))
;; endless pit death plane.
(send-event (-> obj process) 'attack-invinc #f (static-attack-info ((mode 'endlessfall))))
)
)
)
0
(none)
)
(defun default-collision-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector))
+105 -160
View File
@@ -410,12 +410,8 @@
(let* ((block-width (gs-block-width tex-format))
(block-height (gs-block-height tex-format))
;; round up to neaest block.
(real-width
(* (/ (+ (+ block-width -1) tex-width) block-width) block-width)
)
(real-height
(* (/ (+ (+ block-height -1) tex-height) block-height) block-height)
)
(real-width (* (/ (+ (+ block-width -1) tex-width) block-width) block-width))
(real-height (* (/ (+ (+ block-height -1) tex-height) block-height) block-height))
;; and now convert to actual blocks
(width-blocks (/ real-width block-width))
(height-blocks (/ real-height block-height))
@@ -436,12 +432,8 @@
"This function doesn't make much sense... It's unused so maybe it's just wrong?"
(let* ((page-width (gs-page-width tex-format))
(page-height (gs-page-height tex-format))
(real-width
(* (/ (+ (+ page-width -1) tex-width) page-width) page-width)
)
(real-height
(* (/ (+ (+ page-height -1) tex-height) page-height) page-height)
)
(real-width (* (/ (+ (+ page-width -1) tex-width) page-width) page-width))
(real-height (* (/ (+ (+ page-height -1) tex-height) page-height) page-height))
(width-blocks (/ real-width page-width))
(height-blocks (/ real-height page-height))
;; past here, it doesn't make much sense to me.
@@ -1929,13 +1921,7 @@
(font-tx-1-fmt (gs-psm mt4hl)) ;; 4-bit, using 4 of the 8 free bits of z24
)
;; do the relocation!
(texture-relocate
dma-buff
font-tx-1
font-tx-1-dest
font-tx-1-fmt
font-clut
)
(texture-relocate dma-buff font-tx-1 font-tx-1-dest font-tx-1-fmt font-clut)
;; tell the font system that we put the texture here.
(font-set-tex0
(the-as (pointer gs-tex0) (-> *font-work* small-font-lo-tmpl))
@@ -1949,13 +1935,7 @@
(font-tx-0-dest #xe0000)
(font-tx-0-fmt (gs-psm mt4hh))
)
(texture-relocate
dma-buff
font-tx-0
font-tx-0-dest
font-tx-0-fmt
font-clut
)
(texture-relocate dma-buff font-tx-0 font-tx-0-dest font-tx-0-fmt font-clut)
(font-set-tex0
(the-as (pointer gs-tex0) (-> *font-work* small-font-hi-tmpl))
font-tx-0
@@ -1968,13 +1948,7 @@
(font-tx-3-dest #xe6000)
(font-tx-3-fmt (gs-psm mt4hl))
)
(texture-relocate
dma-buff
font-tx-3
font-tx-3-dest
font-tx-3-fmt
font-clut
)
(texture-relocate dma-buff font-tx-3 font-tx-3-dest font-tx-3-fmt font-clut)
(font-set-tex0
(the-as (pointer gs-tex0) (-> *font-work* large-font-lo-tmpl))
font-tx-3
@@ -1982,23 +1956,19 @@
(the-as uint font-tx-3-fmt)
(the-as uint clut-dest-addr)
)
(set! font-tx-3 (lookup-texture-by-id (new 'static 'texture-id :index #x2 :page #x4fe)))
(set! font-tx-3-dest #xe6000)
(set! font-tx-3-fmt (gs-psm mt4hh))
(texture-relocate
dma-buff
font-tx-3
font-tx-3-dest
font-tx-3-fmt
font-clut
)
)
(let ((font-tx-2 (lookup-texture-by-id (new 'static 'texture-id :index #x2 :page #x4fe)))
(font-tx-2-dest #xe0000)
(font-tx-2-fmt (gs-psm mt4hh))
)
(texture-relocate dma-buff font-tx-2 font-tx-2-dest (the-as gs-psm font-tx-2-fmt) font-clut)
(font-set-tex0
(the-as (pointer gs-tex0) (-> *font-work* large-font-hi-tmpl))
font-tx-3
(the-as uint font-tx-3-dest)
(the-as uint font-tx-3-fmt)
(the-as uint clut-dest-addr)
)
(the-as (pointer gs-tex0) (-> *font-work* large-font-hi-tmpl))
font-tx-2
(the-as uint font-tx-2-dest)
(the-as uint font-tx-2-fmt)
(the-as uint clut-dest-addr)
)
)
;; texflush
@@ -2118,9 +2088,7 @@
(tex-dbg " tpage is with level ~A~%" v1-2)
(when v1-2
;; add us to the loading level's tpages
(set! (-> v1-2 loaded-texture-page (-> v1-2 loaded-texture-page-count))
obj
)
(set! (-> v1-2 loaded-texture-page (-> v1-2 loaded-texture-page-count)) obj)
(+! (-> v1-2 loaded-texture-page-count) 1)
)
)
@@ -2134,12 +2102,7 @@
(set! (-> *texture-relocate-later* memcpy) #f)
;; allocate!
((-> *texture-pool* allocate-func)
*texture-pool*
obj
arg0
(the-as int a3-0)
)
((-> *texture-pool* allocate-func) *texture-pool* obj arg0 (the-as int a3-0))
)
;; the actual condition
(not (-> *texture-relocate-later* memcpy))
@@ -2148,11 +2111,8 @@
(set! (-> s4-0 page) obj)
(if (not (-> s4-0 link))
(set! (-> s4-0 link)
(the-as
texture-link
(malloc 'loading-level (* (max (-> s4-0 length) (-> obj length)) 4))
)
)
(the-as texture-link (malloc 'loading-level (* (max (-> s4-0 length) (-> obj length)) 4)))
)
)
)
(else
@@ -2174,19 +2134,12 @@
(s4-0 (-> gp-0 page))
)
;; do this first, before allocating
(ultimate-memcpy
(the-as pointer (-> gp-0 dest))
(the-as pointer (-> gp-0 source))
(-> gp-0 move)
)
(ultimate-memcpy (the-as pointer (-> gp-0 dest)) (the-as pointer (-> gp-0 source)) (-> gp-0 move))
(set! (-> s5-0 page) s4-0)
;; now safe to allocate links!
(if (not (-> s5-0 link))
(set! (-> s5-0 link)
(the-as
texture-link
(malloc 'loading-level (* (max (-> s5-0 length) (-> s4-0 length)) 4))
)
(the-as texture-link (malloc 'loading-level (* (max (-> s5-0 length) (-> s4-0 length)) 4)))
)
)
)
@@ -2271,7 +2224,7 @@
;; debug menu shader stuff
(define *shader-list* '())
(define *edit-shader* (the-as texture-id 0))
(define *edit-shader* (new 'static 'texture-id))
(defun link-texture-by-id ((arg0 texture-id) (arg1 adgif-shader))
"Link the given adgif shader to the texture with the given ID"
@@ -2485,12 +2438,8 @@
(-> dir-entry link)
)
;; push
(set! (-> shader next shader)
(-> dir-entry link next (-> tex-id index) shader)
)
(set! (-> dir-entry link next (-> tex-id index) shader)
(shr (the-as uint shader) 4)
)
(set! (-> shader next shader) (-> dir-entry link next (-> tex-id index) shader))
(set! (-> dir-entry link next (-> tex-id index) shader) (shr (the-as uint shader) 4))
)
(when (and (-> dir-entry page)
(< (-> tex-id index) (the-as uint (-> dir-entry page length)))
@@ -2522,9 +2471,7 @@
(let ((a1-7 (-> *texture-page-dir* entries (the-as uint (-> v1-4 page)))))
(when (and (< (-> v1-4 index) (the-as uint (-> a1-7 length))) (-> a1-7 link))
(set! (-> arg0 next shader) (-> a1-7 link next (-> v1-4 index) shader))
(set! (-> a1-7 link next (-> v1-4 index) shader)
(shr (the-as uint arg0) 4)
)
(set! (-> a1-7 link next (-> v1-4 index) shader) (shr (the-as uint arg0) 4))
)
(when (and (-> a1-7 page)
(< (-> v1-4 index) (the-as uint (-> a1-7 page length)))
@@ -2580,96 +2527,94 @@
(defun-debug texture-page-dir-inspect ((dir texture-page-dir) (mode symbol))
(format #t "[~8x] ~A~%" dir (-> dir type))
(let ((pool *texture-pool*))
(format
#t
"~Ttexture pool (~DK used, ~DK free)~%"
(/ (- (-> pool cur) (-> pool top)) 256)
(/ (- #xa0000 (-> pool cur)) 256)
(format #t "~Ttexture pool (~DK used, ~DK free)~%"
(/ (- (-> pool cur) (-> pool top)) 256)
(/ (- #xa0000 (-> pool cur)) 256)
)
)
)
(dotimes (level-idx (-> *level* length))
(let ((lev (-> *level* level level-idx)))
(if (= (-> lev status) 'active)
(texture-page-size-check *texture-pool* lev #f)
)
(let ((lev (-> *level* level level-idx)))
(if (= (-> lev status) 'active)
(texture-page-size-check *texture-pool* lev #f)
)
)
)
)
(format #t "~Tlength: ~D~%" (-> dir length))
(format #t "~Tdata[~D]: @ #x~X~%" (-> dir length) (-> dir entries))
(dotimes (entry-idx (-> dir length))
(let ((entry-page (-> dir entries entry-idx page))
(entry-link (-> dir entries entry-idx link))
)
(cond
(entry-page
(format #t "~T [~3D] loaded ~S ~A~%" entry-idx (if entry-link
" linked"
"unlinked"
)
entry-page
)
)
(else
(if (= mode 'full)
(format
#t
"~T [~3D] unloaded ~S #<texture-page :length ~D>~%"
entry-idx
(if entry-link
" linked"
"unlinked"
)
(-> dir entries entry-idx length)
)
)
)
)
(when (and (or entry-page entry-link) mode)
(dotimes (entry-list-length (-> dir entries entry-idx length))
(cond
((not entry-link)
(format #t "~T [~3D] unlinked" entry-list-length)
)
((zero? (-> entry-link next entry-list-length shader))
(format #t "~T [~3D] UNUSED " entry-list-length)
)
(else
(let ((t9-9 format)
(a0-12 #t)
(a1-10 "~T [~3D] ~3D links ")
(a2-11 entry-list-length)
(a3-7 0)
)
(let
((v1-40
(the-as object (* (-> entry-link next entry-list-length shader) 16))
)
)
(while (nonzero? (the-as int v1-40))
(nop!)
(+! a3-7 1)
(set! v1-40 (* (-> (the-as adgif-shader v1-40) next shader) 16))
)
(let ((entry-page (-> dir entries entry-idx page))
(entry-link (-> dir entries entry-idx link))
)
(t9-9 a0-12 a1-10 a2-11 a3-7)
)
)
)
(cond
((not entry-page)
(format #t " unloaded~%")
(entry-page
(format
#t
"~T [~3D] loaded ~S ~A~%"
entry-idx
(if entry-link
" linked"
"unlinked"
)
entry-page
)
)
(else
(if (= mode 'full)
(format
#t
"~T [~3D] unloaded ~S #<texture-page :length ~D>~%"
entry-idx
(if entry-link
" linked"
"unlinked"
)
(-> dir entries entry-idx length)
)
)
)
)
((not (-> entry-page data entry-list-length))
(format #t " empty~%")
(when (and (or entry-page entry-link) mode)
(dotimes (entry-list-length (-> dir entries entry-idx length))
(cond
((not entry-link)
(format #t "~T [~3D] unlinked" entry-list-length)
)
((zero? (-> entry-link next entry-list-length shader))
(format #t "~T [~3D] UNUSED " entry-list-length)
)
(else
(let ((t9-9 format)
(a0-12 #t)
(a1-10 "~T [~3D] ~3D links ")
(a2-11 entry-list-length)
(a3-7 0)
)
(let ((v1-40 (the-as object (* (-> entry-link next entry-list-length shader) 16))))
(while (nonzero? (the-as uint v1-40))
(nop!)
(+! a3-7 1)
(set! v1-40 (* (-> (the-as adgif-shader v1-40) next shader) 16))
)
)
(t9-9 a0-12 a1-10 a2-11 a3-7)
)
)
)
(cond
((not entry-page)
(format #t " unloaded~%")
)
((not (-> entry-page data entry-list-length))
(format #t " empty~%")
)
(else
(format #t " ~A~%" (-> entry-page data entry-list-length))
)
)
)
)
(else
(format #t " ~A~%" (-> entry-page data entry-list-length))
)
)
)
)
)
)
(none)
)
+15 -1
View File
@@ -115,7 +115,21 @@
(format #t "~Tdrawable-trees: ~A~%" (-> obj drawable-trees))
(format #t "~Tpat: #x~X~%" (-> obj pat))
(format #t "~Tpat-length: ~D~%" (-> obj pat-length))
(inspect-bsp-tree obj (the-as bsp-node (-> obj nodes)))
;; putting this stuff here for debugging!
(format #t "~Ttexture-remap-table-len: ~D~%" (-> obj texture-remap-table-len))
(dotimes (i (-> obj texture-remap-table-len))
(let* ((tex-id-array (the (pointer texture-id) (&-> obj texture-remap-table i)))
(tex-id-from (-> tex-id-array 0))
(tex-id-to (-> tex-id-array 1))
)
(format #t "~T~Ttex-remap[~D]: #<texture-id :page ~D :index ~D> --> #<texture-id :page ~D :index ~D>~%"
i
(-> tex-id-from page) (-> tex-id-from index)
(-> tex-id-to page) (-> tex-id-to index)
)
)
)
;;(inspect-bsp-tree obj (the-as bsp-node (-> obj nodes)))
obj
)
+6 -6
View File
@@ -609,19 +609,19 @@
(let ((bsp-hdr (-> *level* log-in-level-bsp)))
(when bsp-hdr
(let* ((table-size (-> bsp-hdr texture-remap-table-len)) ;; in 64-bit entries
(table-data-start (-> bsp-hdr texture-remap-table))
(table-data-ptr table-data-start)
(table-data-ptr (-> bsp-hdr texture-remap-table))
(table-data-start table-data-ptr)
(mask1 (the-as uint #xfffffff8)) ;; mask for table entry addresses
(masked-tex-id (logand (the-as uint #xffffff00) tex-id)) ;; bits of tex-id we care about
(table-data-end (&+ table-data-ptr (* table-size 8)))
(table-data-end (&+ table-data-start (* table-size 8)))
)
;; top of binary search
(label cfg-2)
;; if we didn't find anything, quit
(b! (= table-data-start table-data-end) cfg-8)
(b! (= table-data-ptr table-data-end) cfg-8)
;; find the middle entry.
(let ((midpoint (logand (/ (+ (the-as int table-data-start) (the-as int table-data-end)) 2)
(let ((midpoint (logand (/ (+ (the-as int table-data-ptr) (the-as int table-data-end)) 2)
mask1
)
)
@@ -641,7 +641,7 @@
(label cfg-6)
(b! #t cfg-2
:delay
(set! table-data-start (the-as (pointer uint64) (+ (the-as int midpoint) 8)))
(set! table-data-ptr (the-as (pointer uint64) (+ (the-as int midpoint) 8)))
)
;; exact match
@@ -146,7 +146,7 @@
(random-mult int32 :offset 12)
(sym symbol :offset 4) ;; moved
(func symbol :offset 4)
(tex uint32 :offset 4)
(tex texture-id :offset 4)
(pntr pointer :offset 4)
;; sym used to be here
(sound sound-spec :offset 4)
+205 -18
View File
@@ -5,7 +5,7 @@
;; name in dgo: demo-obs
;; dgos: DEM, L1
(define-extern static-screen-spawn (function int int int int int symbol target (pointer process))) ;; target may differ
(define-extern static-screen-spawn (function int texture-id texture-id texture-id time-frame symbol process-tree (pointer static-screen)))
;; DECOMP BEGINS
@@ -24,17 +24,50 @@
(load-state-want-vis 'vi1)
(case (scf-get-territory)
((2)
(let ((gp-0 (ppointer->handle (static-screen-spawn 6 #x27c00000 #x27c00100 #x27c00200 1500 #f self))))
(let ((gp-0 (ppointer->handle (static-screen-spawn
6
(new 'static 'texture-id :page #x27c)
(new 'static 'texture-id :index #x1 :page #x27c)
(new 'static 'texture-id :index #x2 :page #x27c)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-0)
(suspend)
)
)
(let ((gp-1 (ppointer->handle (static-screen-spawn 7 #x27d00000 #x27d00100 #x27d00200 1500 #f self))))
(let ((gp-1 (ppointer->handle (static-screen-spawn
7
(new 'static 'texture-id :page #x27d)
(new 'static 'texture-id :index #x1 :page #x27d)
(new 'static 'texture-id :index #x2 :page #x27d)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-1)
(suspend)
)
)
(let ((gp-2 (ppointer->handle (static-screen-spawn 8 #x2f000000 #x2f000100 #x2f000200 #x4650 #t self))))
(let ((gp-2 (ppointer->handle (static-screen-spawn
8
(new 'static 'texture-id :page #x2f0)
(new 'static 'texture-id :index #x1 :page #x2f0)
(new 'static 'texture-id :index #x2 :page #x2f0)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-2)
(suspend)
)
@@ -43,77 +76,198 @@
((1)
(case (-> *setting-control* current language)
(((language-enum french))
(let ((gp-3 (ppointer->handle (static-screen-spawn 10 #x63f00000 #x63f00100 #x63f00200 1500 #f self))))
(let ((gp-3 (ppointer->handle (static-screen-spawn
10
(new 'static 'texture-id :page #x63f)
(new 'static 'texture-id :index #x1 :page #x63f)
(new 'static 'texture-id :index #x2 :page #x63f)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-3)
(suspend)
)
)
)
(((language-enum german))
(let ((gp-4 (ppointer->handle (static-screen-spawn 11 #x64000000 #x64000100 #x64000200 1500 #f self))))
(let ((gp-4 (ppointer->handle (static-screen-spawn
11
(new 'static 'texture-id :page #x640)
(new 'static 'texture-id :index #x1 :page #x640)
(new 'static 'texture-id :index #x2 :page #x640)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-4)
(suspend)
)
)
)
(((language-enum italian))
(let ((gp-5 (ppointer->handle (static-screen-spawn 12 #x64100000 #x64100100 #x64100200 1500 #f self))))
(let ((gp-5 (ppointer->handle (static-screen-spawn
12
(new 'static 'texture-id :page #x641)
(new 'static 'texture-id :index #x1 :page #x641)
(new 'static 'texture-id :index #x2 :page #x641)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-5)
(suspend)
)
)
)
(((language-enum spanish))
(let ((gp-6 (ppointer->handle (static-screen-spawn 13 #x64200000 #x64200100 #x64200200 1500 #f self))))
(let ((gp-6 (ppointer->handle (static-screen-spawn
13
(new 'static 'texture-id :page #x642)
(new 'static 'texture-id :index #x1 :page #x642)
(new 'static 'texture-id :index #x2 :page #x642)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-6)
(suspend)
)
)
)
(else
(let ((gp-7 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self))))
(let ((gp-7 (ppointer->handle (static-screen-spawn
2
(new 'static 'texture-id :page #x5cd)
(new 'static 'texture-id :index #x1 :page #x5cd)
(new 'static 'texture-id :index #x2 :page #x5cd)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-7)
(suspend)
)
)
)
)
(let ((gp-8 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self))))
(let ((gp-8 (ppointer->handle (static-screen-spawn
3
(new 'static 'texture-id :page #x5ce)
(new 'static 'texture-id :index #x1 :page #x5ce)
(new 'static 'texture-id :index #x2 :page #x5ce)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-8)
(suspend)
)
)
(case (-> *setting-control* current language)
(((language-enum french))
(let ((gp-9 (ppointer->handle (static-screen-spawn 15 #x64400000 #x64400100 #x64400200 #x4650 #t self))))
(let ((gp-9 (ppointer->handle (static-screen-spawn
15
(new 'static 'texture-id :page #x644)
(new 'static 'texture-id :index #x1 :page #x644)
(new 'static 'texture-id :index #x2 :page #x644)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-9)
(suspend)
)
)
)
(((language-enum german))
(let ((gp-10 (ppointer->handle (static-screen-spawn 16 #x64500000 #x64500100 #x64500200 #x4650 #t self))))
(let ((gp-10 (ppointer->handle (static-screen-spawn
16
(new 'static 'texture-id :page #x645)
(new 'static 'texture-id :index #x1 :page #x645)
(new 'static 'texture-id :index #x2 :page #x645)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-10)
(suspend)
)
)
)
(((language-enum italian))
(let ((gp-11 (ppointer->handle (static-screen-spawn 17 #x64600000 #x64600100 #x64600200 #x4650 #t self))))
(let ((gp-11 (ppointer->handle (static-screen-spawn
17
(new 'static 'texture-id :page #x646)
(new 'static 'texture-id :index #x1 :page #x646)
(new 'static 'texture-id :index #x2 :page #x646)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-11)
(suspend)
)
)
)
(((language-enum spanish))
(let ((gp-12 (ppointer->handle (static-screen-spawn 18 #x64700000 #x64700100 #x64700200 #x4650 #t self))))
(let ((gp-12 (ppointer->handle (static-screen-spawn
18
(new 'static 'texture-id :page #x647)
(new 'static 'texture-id :index #x1 :page #x647)
(new 'static 'texture-id :index #x2 :page #x647)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-12)
(suspend)
)
)
)
(else
(let ((gp-13 (ppointer->handle (static-screen-spawn 14 #x64300000 #x64300100 #x64300200 #x4650 #t self))))
(let ((gp-13 (ppointer->handle (static-screen-spawn
14
(new 'static 'texture-id :page #x643)
(new 'static 'texture-id :index #x1 :page #x643)
(new 'static 'texture-id :index #x2 :page #x643)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-13)
(suspend)
)
@@ -122,17 +276,50 @@
)
)
(else
(let ((gp-14 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self))))
(let ((gp-14 (ppointer->handle (static-screen-spawn
2
(new 'static 'texture-id :page #x5cd)
(new 'static 'texture-id :index #x1 :page #x5cd)
(new 'static 'texture-id :index #x2 :page #x5cd)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-14)
(suspend)
)
)
(let ((gp-15 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self))))
(let ((gp-15 (ppointer->handle (static-screen-spawn
3
(new 'static 'texture-id :page #x5ce)
(new 'static 'texture-id :index #x1 :page #x5ce)
(new 'static 'texture-id :index #x2 :page #x5ce)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-15)
(suspend)
)
)
(let ((gp-16 (ppointer->handle (static-screen-spawn 4 #x5cf00000 #x5cf00100 #x5cf00200 #x4650 #t self))))
(let ((gp-16 (ppointer->handle (static-screen-spawn
4
(new 'static 'texture-id :page #x5cf)
(new 'static 'texture-id :index #x1 :page #x5cf)
(new 'static 'texture-id :index #x2 :page #x5cf)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-16)
(suspend)
)
+10 -11
View File
@@ -138,7 +138,7 @@
)
)
(defbehavior static-screen-init-by-other static-screen ((arg0 int) (arg1 int) (arg2 int) (arg3 int) (arg4 time-frame) (arg5 symbol))
(defbehavior static-screen-init-by-other static-screen ((arg0 int) (arg1 texture-id) (arg2 texture-id) (arg3 texture-id) (arg4 time-frame) (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))
@@ -152,16 +152,15 @@
(none)
)
(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)
)
(defun static-screen-spawn ((arg0 int)
(arg1 texture-id)
(arg2 texture-id)
(arg3 texture-id)
(arg4 time-frame)
(arg5 symbol)
(arg6 process-tree)
)
(process-spawn static-screen arg0 arg1 arg2 arg3 arg4 arg5 :to arg6)
)
+11 -1
View File
@@ -678,7 +678,17 @@
(let ((gp-0 (the-as handle #f)))
(case (scf-get-territory)
((2)
(set! gp-0 (ppointer->handle (static-screen-spawn 5 #x64900000 #x64900100 #x64900200 900 #f self)))
(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)
+204 -17
View File
@@ -17,17 +17,50 @@
(load-state-want-vis 'vi1)
(case (scf-get-territory)
((2)
(let ((gp-0 (ppointer->handle (static-screen-spawn 6 #x27c00000 #x27c00100 #x27c00200 1500 #f self))))
(let ((gp-0 (ppointer->handle (static-screen-spawn
6
(new 'static 'texture-id :page #x27c)
(new 'static 'texture-id :index #x1 :page #x27c)
(new 'static 'texture-id :index #x2 :page #x27c)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-0)
(suspend)
)
)
(let ((gp-1 (ppointer->handle (static-screen-spawn 7 #x27d00000 #x27d00100 #x27d00200 1500 #f self))))
(let ((gp-1 (ppointer->handle (static-screen-spawn
7
(new 'static 'texture-id :page #x27d)
(new 'static 'texture-id :index #x1 :page #x27d)
(new 'static 'texture-id :index #x2 :page #x27d)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-1)
(suspend)
)
)
(let ((gp-2 (ppointer->handle (static-screen-spawn 8 #x2f000000 #x2f000100 #x2f000200 #x4650 #t self))))
(let ((gp-2 (ppointer->handle (static-screen-spawn
8
(new 'static 'texture-id :page #x2f0)
(new 'static 'texture-id :index #x1 :page #x2f0)
(new 'static 'texture-id :index #x2 :page #x2f0)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-2)
(suspend)
)
@@ -36,77 +69,198 @@
((1)
(case (-> *setting-control* current language)
(((language-enum french))
(let ((gp-3 (ppointer->handle (static-screen-spawn 10 #x63f00000 #x63f00100 #x63f00200 1500 #f self))))
(let ((gp-3 (ppointer->handle (static-screen-spawn
10
(new 'static 'texture-id :page #x63f)
(new 'static 'texture-id :index #x1 :page #x63f)
(new 'static 'texture-id :index #x2 :page #x63f)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-3)
(suspend)
)
)
)
(((language-enum german))
(let ((gp-4 (ppointer->handle (static-screen-spawn 11 #x64000000 #x64000100 #x64000200 1500 #f self))))
(let ((gp-4 (ppointer->handle (static-screen-spawn
11
(new 'static 'texture-id :page #x640)
(new 'static 'texture-id :index #x1 :page #x640)
(new 'static 'texture-id :index #x2 :page #x640)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-4)
(suspend)
)
)
)
(((language-enum italian))
(let ((gp-5 (ppointer->handle (static-screen-spawn 12 #x64100000 #x64100100 #x64100200 1500 #f self))))
(let ((gp-5 (ppointer->handle (static-screen-spawn
12
(new 'static 'texture-id :page #x641)
(new 'static 'texture-id :index #x1 :page #x641)
(new 'static 'texture-id :index #x2 :page #x641)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-5)
(suspend)
)
)
)
(((language-enum spanish))
(let ((gp-6 (ppointer->handle (static-screen-spawn 13 #x64200000 #x64200100 #x64200200 1500 #f self))))
(let ((gp-6 (ppointer->handle (static-screen-spawn
13
(new 'static 'texture-id :page #x642)
(new 'static 'texture-id :index #x1 :page #x642)
(new 'static 'texture-id :index #x2 :page #x642)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-6)
(suspend)
)
)
)
(else
(let ((gp-7 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self))))
(let ((gp-7 (ppointer->handle (static-screen-spawn
2
(new 'static 'texture-id :page #x5cd)
(new 'static 'texture-id :index #x1 :page #x5cd)
(new 'static 'texture-id :index #x2 :page #x5cd)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-7)
(suspend)
)
)
)
)
(let ((gp-8 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self))))
(let ((gp-8 (ppointer->handle (static-screen-spawn
3
(new 'static 'texture-id :page #x5ce)
(new 'static 'texture-id :index #x1 :page #x5ce)
(new 'static 'texture-id :index #x2 :page #x5ce)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-8)
(suspend)
)
)
(case (-> *setting-control* current language)
(((language-enum french))
(let ((gp-9 (ppointer->handle (static-screen-spawn 15 #x64400000 #x64400100 #x64400200 #x4650 #t self))))
(let ((gp-9 (ppointer->handle (static-screen-spawn
15
(new 'static 'texture-id :page #x644)
(new 'static 'texture-id :index #x1 :page #x644)
(new 'static 'texture-id :index #x2 :page #x644)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-9)
(suspend)
)
)
)
(((language-enum german))
(let ((gp-10 (ppointer->handle (static-screen-spawn 16 #x64500000 #x64500100 #x64500200 #x4650 #t self))))
(let ((gp-10 (ppointer->handle (static-screen-spawn
16
(new 'static 'texture-id :page #x645)
(new 'static 'texture-id :index #x1 :page #x645)
(new 'static 'texture-id :index #x2 :page #x645)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-10)
(suspend)
)
)
)
(((language-enum italian))
(let ((gp-11 (ppointer->handle (static-screen-spawn 17 #x64600000 #x64600100 #x64600200 #x4650 #t self))))
(let ((gp-11 (ppointer->handle (static-screen-spawn
17
(new 'static 'texture-id :page #x646)
(new 'static 'texture-id :index #x1 :page #x646)
(new 'static 'texture-id :index #x2 :page #x646)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-11)
(suspend)
)
)
)
(((language-enum spanish))
(let ((gp-12 (ppointer->handle (static-screen-spawn 18 #x64700000 #x64700100 #x64700200 #x4650 #t self))))
(let ((gp-12 (ppointer->handle (static-screen-spawn
18
(new 'static 'texture-id :page #x647)
(new 'static 'texture-id :index #x1 :page #x647)
(new 'static 'texture-id :index #x2 :page #x647)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-12)
(suspend)
)
)
)
(else
(let ((gp-13 (ppointer->handle (static-screen-spawn 14 #x64300000 #x64300100 #x64300200 #x4650 #t self))))
(let ((gp-13 (ppointer->handle (static-screen-spawn
14
(new 'static 'texture-id :page #x643)
(new 'static 'texture-id :index #x1 :page #x643)
(new 'static 'texture-id :index #x2 :page #x643)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-13)
(suspend)
)
@@ -115,17 +269,50 @@
)
)
(else
(let ((gp-14 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self))))
(let ((gp-14 (ppointer->handle (static-screen-spawn
2
(new 'static 'texture-id :page #x5cd)
(new 'static 'texture-id :index #x1 :page #x5cd)
(new 'static 'texture-id :index #x2 :page #x5cd)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-14)
(suspend)
)
)
(let ((gp-15 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self))))
(let ((gp-15 (ppointer->handle (static-screen-spawn
3
(new 'static 'texture-id :page #x5ce)
(new 'static 'texture-id :index #x1 :page #x5ce)
(new 'static 'texture-id :index #x2 :page #x5ce)
(seconds 5)
#f
self
)
)
)
)
(while (handle->process gp-15)
(suspend)
)
)
(let ((gp-16 (ppointer->handle (static-screen-spawn 4 #x5cf00000 #x5cf00100 #x5cf00200 #x4650 #t self))))
(let ((gp-16 (ppointer->handle (static-screen-spawn
4
(new 'static 'texture-id :page #x5cf)
(new 'static 'texture-id :index #x1 :page #x5cf)
(new 'static 'texture-id :index #x2 :page #x5cf)
(seconds 60)
#t
self
)
)
)
)
(while (handle->process gp-16)
(suspend)
)
+18 -7
View File
@@ -152,7 +152,7 @@
;; 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 time-frame) (arg5 symbol))
(defbehavior static-screen-init-by-other static-screen ((arg0 int) (arg1 texture-id) (arg2 texture-id) (arg3 texture-id) (arg4 time-frame) (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))
@@ -167,15 +167,26 @@
)
;; definition for function static-screen-spawn
;; INFO: Return type mismatch (pointer process) vs (pointer static-screen).
;; Used lq/sq
(defun static-screen-spawn ((arg0 int) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 symbol) (arg6 target))
(defun static-screen-spawn ((arg0 int)
(arg1 texture-id)
(arg2 texture-id)
(arg3 texture-id)
(arg4 time-frame)
(arg5 symbol)
(arg6 process-tree)
)
(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))
(the-as
(pointer static-screen)
(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)
)
(run-now-in-process sv-16 static-screen-init-by-other arg0 arg1 arg2 arg3 arg4 arg5)
(-> sv-16 ppointer)
)
)
+11 -1
View File
@@ -723,7 +723,17 @@
(let ((gp-0 (the-as handle #f)))
(case (scf-get-territory)
((2)
(set! gp-0 (ppointer->handle (static-screen-spawn 5 #x64900000 #x64900100 #x64900200 900 #f self)))
(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)