mirror of
https://github.com/open-goal/jak-project
synced 2026-06-01 17:58:14 -04:00
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:
@@ -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))
|
||||
|
||||
|
||||
;; ----------------------
|
||||
|
||||
+9
-986
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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)
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user