mirror of
https://github.com/open-goal/jak-project
synced 2026-05-28 08:25:56 -04:00
637990314b
Closes #736 --------- Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
930 lines
37 KiB
Common Lisp
Vendored
Generated
930 lines
37 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition for method 0 of type bigmap
|
|
(defmethod new bigmap ((allocation symbol) (type-to-make type))
|
|
(let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
|
|
(set! (-> gp-0 bigmap-image)
|
|
((method-of-type external-art-buffer new)
|
|
allocation
|
|
external-art-buffer
|
|
0
|
|
(lambda ((arg0 external-art-buffer))
|
|
(let ((a1-3 (logand -64 (+ -591936 (-> *display* frames 0 global-buf real-buffer-end) 63)))
|
|
(v1-1 (-> arg0 heap))
|
|
)
|
|
(set! (-> v1-1 base) (the-as pointer a1-3))
|
|
(set! (-> v1-1 current) (-> v1-1 base))
|
|
(set! (-> v1-1 top-base) (&+ (-> v1-1 base) #x90800))
|
|
(set! (-> v1-1 top) (-> v1-1 top-base))
|
|
)
|
|
0
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
(set! (-> gp-0 tpage)
|
|
((method-of-type external-art-buffer new)
|
|
allocation
|
|
external-art-buffer
|
|
0
|
|
(lambda ((arg0 external-art-buffer))
|
|
(let ((a1-3 (logand -64 (+ -597056 (-> *display* frames 1 global-buf real-buffer-end) 63)))
|
|
(v1-1 (-> arg0 heap))
|
|
)
|
|
(set! (-> v1-1 base) (the-as pointer a1-3))
|
|
(set! (-> v1-1 current) (-> v1-1 base))
|
|
(set! (-> v1-1 top-base) (&+ (-> v1-1 base) #x54000))
|
|
(set! (-> v1-1 top) (-> v1-1 top-base))
|
|
)
|
|
0
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
(set! (-> gp-0 tpage2)
|
|
((method-of-type external-art-buffer new)
|
|
allocation
|
|
external-art-buffer
|
|
0
|
|
(lambda ((arg0 external-art-buffer))
|
|
(let ((a1-3 (logand -64 (+ -941120 (-> *display* frames 1 global-buf real-buffer-end) 63)))
|
|
(v1-1 (-> arg0 heap))
|
|
)
|
|
(set! (-> v1-1 base) (the-as pointer a1-3))
|
|
(set! (-> v1-1 current) (-> v1-1 base))
|
|
(set! (-> v1-1 top-base) (&+ (-> v1-1 base) #x54000))
|
|
(set! (-> v1-1 top) (-> v1-1 top-base))
|
|
)
|
|
0
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
(set! (-> gp-0 sprite-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
|
|
(set! (-> gp-0 sprite-tmpl dma-vif vif0) (new 'static 'vif-tag))
|
|
(set! (-> gp-0 sprite-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
|
|
(set! (-> gp-0 sprite-tmpl gif0) (the-as uint #x50ab400000008001))
|
|
(set! (-> gp-0 sprite-tmpl gif1) (the-as uint #x53531))
|
|
(set! (-> gp-0 draw-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
|
|
(set! (-> gp-0 draw-tmpl dma-vif vif0) (new 'static 'vif-tag))
|
|
(set! (-> gp-0 draw-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
|
|
(set! (-> gp-0 draw-tmpl gif0) (the-as uint #x90aa400000008001))
|
|
(set! (-> gp-0 draw-tmpl gif1) (the-as uint #x535353531))
|
|
(set! (-> gp-0 adgif-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
|
|
(set! (-> gp-0 adgif-tmpl dma-vif vif0) (new 'static 'vif-tag))
|
|
(set! (-> gp-0 adgif-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
|
|
(set! (-> gp-0 adgif-tmpl gif0) (the-as uint #x1000000000008005))
|
|
(set! (-> gp-0 adgif-tmpl gif1) (the-as uint 14))
|
|
(set-vector! (-> gp-0 offset) 0.0 0.0 0.0 0.0)
|
|
(set-vector! (-> gp-0 scroll) 0.0 0.0 0.0 0.0)
|
|
(set-vector! (-> gp-0 pos) 0 0 0 0)
|
|
(set-vector! (-> gp-0 color) 128 128 128 128)
|
|
(set! (-> gp-0 drawing-flag) #f)
|
|
(set! (-> gp-0 loading-flag) #f)
|
|
(set! (-> gp-0 progress-minimap) #f)
|
|
(set! (-> gp-0 progress-minimap2) #f)
|
|
(set! (-> gp-0 auto-save-icon-flag) #f)
|
|
(initialize gp-0)
|
|
gp-0
|
|
)
|
|
)
|
|
|
|
;; definition for symbol *bigmap-info-array*, type bigmap-info-array
|
|
(define *bigmap-info-array*
|
|
(new 'static 'bigmap-info-array
|
|
:data (new 'static 'inline-array bigmap-info 24
|
|
(new 'static 'bigmap-info :x -2621440.0 :y -4456448.0 :z 16384.0 :w 0.000061035156)
|
|
(new 'static 'bigmap-info :x -2621440.0 :y -4456448.0 :z 16384.0 :w 0.000061035156)
|
|
(new 'static 'bigmap-info :x -2038169.6 :y -2301542.5 :z 27443.2 :w 0.0000364389)
|
|
(new 'static 'bigmap-info :x -354713.6 :y -1128448.0 :z 4505.6 :w 0.00022194601)
|
|
(new 'static 'bigmap-info :x -4205363.0 :y 3437363.2 :z 4628.48 :w 0.00021605365)
|
|
(new 'static 'bigmap-info :x -3381657.5 :y 2019737.6 :z 7618.56 :w 0.0001312584)
|
|
(new 'static 'bigmap-info :x -1399193.6 :y -1023590.4 :z 5406.72 :w 0.00018495502)
|
|
(new 'static 'bigmap-info :x 2215526.5 :y 615055.4 :z 10444.8 :w 0.00009574142)
|
|
(new 'static 'bigmap-info :x 2215526.5 :y 615055.4 :z 10444.8 :w 0.00009574142)
|
|
(new 'static 'bigmap-info :z 16384.0 :w 0.000061035156)
|
|
(new 'static 'bigmap-info :x -1481932.8 :y -918323.2 :z 5857.28 :w 0.00017072771)
|
|
(new 'static 'bigmap-info :x -1481932.8 :y -918323.2 :z 5857.28 :w 0.00017072771)
|
|
(new 'static 'bigmap-info :x -2614886.5 :y -1766195.2 :z 9052.16 :w 0.00011047087)
|
|
(new 'static 'bigmap-info :x -2530508.8 :y -1041203.2 :z 5591.04 :w 0.0001788576)
|
|
(new 'static 'bigmap-info :x -2374451.2 :y -4505.6 :z 4628.48 :w 0.00021605365)
|
|
(new 'static 'bigmap-info :x -2712780.8 :y -2477260.8 :z 6471.68 :w 0.00015451938)
|
|
(new 'static 'bigmap-info :x -1218560.0 :y -3392307.2 :z 5857.28 :w 0.00017072771)
|
|
(new 'static 'bigmap-info :x 16039117.0 :y 16509747.0 :z 3317.76 :w 0.00030140817)
|
|
(new 'static 'bigmap-info :x 15403827.0 :y 16360653.0 :z 5283.84 :w 0.0001892563)
|
|
(new 'static 'bigmap-info :x 15403827.0 :y 16360653.0 :z 5283.84 :w 0.0001892563)
|
|
(new 'static 'bigmap-info :x 15403827.0 :y 16360653.0 :z 5283.84 :w 0.0001892563)
|
|
(new 'static 'bigmap-info :x -1716224.0 :y 1286144.0 :z 3604.48 :w 0.00027743253)
|
|
(new 'static 'bigmap-info :x -1316864.0 :y -2084126.8 :z 4014.08 :w 0.00024912308)
|
|
(new 'static 'bigmap-info :x 5619712.0 :y -2914304.0 :z 9830.4 :w 0.00010172526)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 17 of type bigmap
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod set-pos! ((this bigmap) (arg0 vector))
|
|
(rlet ((vf0 :class vf)
|
|
(vf1 :class vf)
|
|
(vf2 :class vf)
|
|
)
|
|
(init-vf0-vector)
|
|
(.lvf vf1 (&-> arg0 quad))
|
|
(.lvf vf2 (&-> this offset quad))
|
|
(.add.z.vf.y vf1 vf0 vf1)
|
|
(.sub.vf vf1 vf1 vf2)
|
|
(.mul.w.vf vf1 vf1 vf2)
|
|
(.ftoi.vf vf1 vf1)
|
|
(.svf (&-> this pos quad) vf1)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
;; definition for method 18 of type bigmap
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod bigmap-method-18 ((this bigmap) (arg0 (pointer int32)))
|
|
(when (or (= (-> this load-index) (bigmap-id sewer-met-hum)) (= (-> this load-index) (bigmap-id sewer-hum-kg)))
|
|
(let ((v1-4 (-> arg0 0)))
|
|
(set! (-> arg0 0) (-> arg0 1))
|
|
(set! (-> arg0 1) (- 832 v1-4))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 19 of type bigmap
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod texture-upload-dma ((this bigmap) (arg0 dma-buffer) (arg1 (pointer uint32)) (arg2 int) (arg3 int) (arg4 int) (arg5 gs-psm))
|
|
(let ((sv-16 arg2))
|
|
(dma-buffer-add-gs-set arg0
|
|
(bitbltbuf (new 'static 'gs-bitbltbuf :dpsm (the-as int arg5) :dbp sv-16 :dbw (/ arg3 64)))
|
|
(trxpos (new 'static 'gs-trxpos))
|
|
(trxreg (new 'static 'gs-trxreg :rrw arg3 :rrh arg4))
|
|
(trxdir (new 'static 'gs-trxdir))
|
|
)
|
|
)
|
|
(dma-buffer-add-ref-texture arg0 arg1 arg3 arg4 arg5)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 21 of type bigmap
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch pointer vs object.
|
|
(defmethod sprite-dma ((this bigmap) (arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int))
|
|
(let ((v1-0 (the-as object (-> arg0 base))))
|
|
(let ((t5-0 0)
|
|
(t4-2 (the int (* 416.0 (-> *video-params* relative-x-scale))))
|
|
)
|
|
(set! (-> (the-as (inline-array vector4w) v1-0) 0 quad) (-> this sprite-tmpl dma-vif quad))
|
|
(set! (-> (the-as (inline-array vector4w) v1-0) 1 quad) (-> this sprite-tmpl quad 1))
|
|
(set! (-> (the-as (inline-array vector4w) v1-0) 2 quad) (-> this color quad))
|
|
(set-vector! (-> (the-as (inline-array vector4w) v1-0) 3) (* arg5 16) (* t5-0 16) 0 0)
|
|
(set-vector! (-> (the-as (inline-array vector4w) v1-0) 4) (* arg1 16) (* arg3 16) #xfffff0 0)
|
|
(set-vector! (-> (the-as (inline-array vector4w) v1-0) 5) (* arg6 16) (* t4-2 16) 0 0)
|
|
)
|
|
(set-vector! (-> (the-as (inline-array vector4w) v1-0) 6) (* arg2 16) (* arg4 16) #xfffff0 0)
|
|
)
|
|
(let ((v0-0 (&+ (-> arg0 base) 112)))
|
|
(set! (-> arg0 base) v0-0)
|
|
v0-0
|
|
)
|
|
)
|
|
|
|
;; definition for method 20 of type bigmap
|
|
;; INFO: Used lq/sq
|
|
(defmethod bigmap-method-20 ((this bigmap) (arg0 dma-buffer))
|
|
(let* ((s4-0 (the-as (pointer uint32) (-> this bigmap-image art-group)))
|
|
(f0-1 (* 0.001953125 (the float (- (-> this x1) (-> this x0)))))
|
|
(s3-0 (the int (* 256.0 f0-1)))
|
|
(v1-5 (the int (-> this scroll x)))
|
|
(a0-2 (-> this x0))
|
|
(f1-7 (-> this scroll x))
|
|
(s2-0 (- a0-2 (the int (* (- f1-7 (* (the float (the int (/ f1-7 256.0))) 256.0)) f0-1))))
|
|
(s1-0 (/ v1-5 256))
|
|
(s0-0 (/ (+ v1-5 511) 256))
|
|
)
|
|
(-> s4-0 2)
|
|
(let ((sv-16 (* (-> s4-0 3) 256)))
|
|
(while (>= s0-0 s1-0)
|
|
(texture-upload-dma
|
|
this
|
|
arg0
|
|
(the-as (pointer uint32) (+ (+ (-> s4-0 0) 16) (the-as uint s4-0)))
|
|
0
|
|
16
|
|
16
|
|
(gs-psm ct32)
|
|
)
|
|
(dma-buffer-add-gs-set arg0 (texflush 0))
|
|
(let ((v1-18 (+ (-> s4-0 1) (* (the-as uint s1-0) sv-16) (* (the int (-> this scroll y)) 256))))
|
|
(texture-upload-dma
|
|
this
|
|
arg0
|
|
(the-as (pointer uint32) (+ (+ v1-18 16) (the-as uint s4-0)))
|
|
8
|
|
256
|
|
416
|
|
(gs-psm mt8)
|
|
)
|
|
)
|
|
(dma-buffer-add-gs-set arg0
|
|
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x4 :psm #x13 :tw #x8 :th #x9 :cld #x1))
|
|
(tex1-1 (new 'static 'gs-tex1))
|
|
(texflush 0)
|
|
)
|
|
(sprite-dma this arg0 (+ s2-0 1792) (+ s3-0 1792 s2-0) (-> this y0) (-> this y1) 0 256)
|
|
(+! s2-0 s3-0)
|
|
(+! s1-0 1)
|
|
)
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
|
|
;; definition for method 22 of type bigmap
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod draw-from-minimap ((this bigmap) (arg0 dma-buffer) (arg1 connection-minimap))
|
|
(rlet ((vf0 :class vf)
|
|
(vf1 :class vf)
|
|
(vf2 :class vf)
|
|
)
|
|
(init-vf0-vector)
|
|
(cond
|
|
((= (-> arg1 position) #t)
|
|
(let ((v1-4 (as-type (handle->process (-> arg1 handle)) process-drawable)))
|
|
(if (and v1-4 (nonzero? (-> v1-4 root)))
|
|
(vector-copy! (-> arg1 last-world-pos) (-> v1-4 root trans))
|
|
)
|
|
)
|
|
)
|
|
((and (= (logand (the-as int (-> arg1 position)) 7) 4)
|
|
(= (-> (the-as entity-actor (-> arg1 position)) type) entity-actor)
|
|
)
|
|
(let* ((v1-14 (the-as entity-actor (-> arg1 position)))
|
|
(a0-13 (as-type
|
|
(if v1-14
|
|
(-> v1-14 extra process)
|
|
)
|
|
process-drawable
|
|
)
|
|
)
|
|
)
|
|
(if a0-13
|
|
(vector-copy! (-> arg1 last-world-pos) (-> a0-13 root trans))
|
|
(vector-copy! (-> arg1 last-world-pos) (-> (the-as entity-actor (-> arg1 position)) extra trans))
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(vector-copy! (-> arg1 last-world-pos) (-> arg1 position))
|
|
)
|
|
)
|
|
(let ((f30-0 (-> arg1 class scale))
|
|
(s1-0 (-> arg1 class color))
|
|
(sv-80 (new 'stack-no-clear 'vector4w))
|
|
(s0-0 (new-stack-vector0))
|
|
(s2-0 (new-stack-vector0))
|
|
(s3-2 (new-stack-vector0))
|
|
)
|
|
(let ((f26-0 (-> *video-params* relative-x-scale))
|
|
(f28-0 (-> *video-params* relative-x-scale-reciprical))
|
|
)
|
|
(-> arg1 class)
|
|
(.lvf vf1 (&-> arg1 last-world-pos quad))
|
|
(.lvf vf2 (&-> this offset quad))
|
|
(.add.z.vf.y vf1 vf0 vf1)
|
|
(.sub.vf vf1 vf1 vf2)
|
|
(.mul.w.vf vf1 vf1 vf2)
|
|
(.ftoi.vf vf1 vf1)
|
|
(.svf (&-> sv-80 quad) vf1)
|
|
(if (logtest? (-> arg1 class flags) (minimap-flag goal))
|
|
(set! (-> arg1 class icon-xy x) (the-as uint (mod (the int (-> this goal-time)) 6)))
|
|
)
|
|
(bigmap-method-18 this (&-> sv-80 x))
|
|
(cond
|
|
((get-horizontal-flip-flag *blit-displays-work*)
|
|
(set! f26-0 (- f26-0))
|
|
(set! (-> s0-0 x) (+ (the float (+ (- 2304 (-> sv-80 x)) (-> this x1))) (-> this scroll x)))
|
|
)
|
|
(else
|
|
(set! (-> s0-0 x) (- (the float (+ (-> sv-80 x) 1792 (-> this x0))) (-> this scroll x)))
|
|
)
|
|
)
|
|
(set! (-> s0-0 y) (+ 1840.0 (* (- (the float (-> sv-80 y)) (-> this scroll y)) f28-0)))
|
|
(let ((f0-12 (* 20.0 f26-0 f30-0))
|
|
(f1-8 (* 20.0 f28-0 f30-0))
|
|
)
|
|
(set! (-> s2-0 x) (the float (the int (- (-> s0-0 x) (/ f0-12 2)))))
|
|
(set! (-> s2-0 y) (the float (the int (- (-> s0-0 y) (/ f1-8 2)))))
|
|
(set! (-> s3-2 x) (+ (-> s2-0 x) f0-12))
|
|
(set! (-> s3-2 y) (+ (-> s2-0 y) f1-8))
|
|
)
|
|
)
|
|
(let* ((a2-1 (the-as uint (+ (* (the-as uint 320) (-> arg1 class icon-xy x)) 8)))
|
|
(a3-0 (the-as uint (+ (* (the-as uint 320) (-> arg1 class icon-xy y)) 8)))
|
|
(v1-55 (+ (the-as int a2-1) 312))
|
|
(a0-35 (+ (the-as int a3-0) 312))
|
|
(a1-6 (the-as object (-> arg0 base)))
|
|
)
|
|
(set! (-> (the-as (inline-array vector4w) a1-6) 0 quad) (-> this sprite-tmpl dma-vif quad))
|
|
(set! (-> (the-as (inline-array vector4w) a1-6) 1 quad) (-> this sprite-tmpl quad 1))
|
|
(set-vector!
|
|
(-> (the-as (inline-array vector4w) a1-6) 2)
|
|
(the-as int (-> s1-0 r))
|
|
(the-as int (-> s1-0 g))
|
|
(the-as int (-> s1-0 b))
|
|
128
|
|
)
|
|
(set-vector! (-> (the-as (inline-array vector4w) a1-6) 3) (the-as int a2-1) (the-as int a3-0) 0 0)
|
|
(set-vector!
|
|
(-> (the-as (inline-array vector4w) a1-6) 4)
|
|
(the int (* 16.0 (-> s2-0 x)))
|
|
(the int (* 16.0 (-> s2-0 y)))
|
|
#xffffff
|
|
0
|
|
)
|
|
(set-vector! (-> (the-as (inline-array vector4w) a1-6) 5) v1-55 a0-35 0 0)
|
|
(set-vector!
|
|
(-> (the-as (inline-array vector4w) a1-6) 6)
|
|
(the int (* 16.0 (-> s3-2 x)))
|
|
(the int (* 16.0 (-> s3-2 y)))
|
|
#xffffff
|
|
0
|
|
)
|
|
)
|
|
)
|
|
(&+! (-> arg0 base) 112)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
;; definition for method 9 of type bigmap
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod initialize ((this bigmap))
|
|
(set! (-> this bigmap-index) (bigmap-id city))
|
|
(set-pending-file (-> this bigmap-image) (the-as string #f) 0 (process->handle *dproc*) 0.0)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 10 of type bigmap
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod update ((this bigmap))
|
|
(when (-> this drawing-flag)
|
|
(update! *minimap*)
|
|
(cond
|
|
((= (-> *blit-displays-work* count-down) 1)
|
|
(set-pending-file
|
|
(-> this bigmap-image)
|
|
"world-map"
|
|
(the-as int (-> this load-index))
|
|
(process->handle *dproc*)
|
|
0.0
|
|
)
|
|
(set-pending-file (-> this tpage) "progress-minimap" 0 (process->handle *dproc*) 0.0)
|
|
(set-pending-file (-> this tpage2) "progress-minimap" 1 (process->handle *dproc*) 0.0)
|
|
(set! (-> this loading-flag) #t)
|
|
)
|
|
(else
|
|
(update (-> this bigmap-image))
|
|
(update (-> this tpage))
|
|
(update (-> this tpage2))
|
|
(when (and (-> this loading-flag)
|
|
(= (file-status (-> this bigmap-image) "world-map" (the-as int (-> this load-index))) 'active)
|
|
(= (file-status (-> this tpage) "progress-minimap" 0) 'active)
|
|
(= (file-status (-> this tpage2) "progress-minimap" 1) 'active)
|
|
(not (load-in-progress? *level*))
|
|
)
|
|
(let ((s5-0 (-> *level* loading-level))
|
|
(s4-0 (-> *texture-pool* allocate-func))
|
|
(s3-0 (-> *texture-relocate-later* memcpy))
|
|
(s2-0 loading-level)
|
|
)
|
|
(set! (-> *texture-pool* allocate-func) texture-page-common-boot-allocate)
|
|
(set! (-> *level* loading-level) #f)
|
|
(set! (-> *texture-relocate-later* memcpy) #f)
|
|
(set! loading-level (-> this tpage heap))
|
|
(set! (-> this progress-minimap)
|
|
(the-as
|
|
texture-page
|
|
(link (-> this tpage buf) (-> this tpage load-file data) (-> this tpage len) (-> this tpage heap) 4)
|
|
)
|
|
)
|
|
(set! (-> this progress-minimap2)
|
|
(the-as
|
|
texture-page
|
|
(link (-> this tpage2 buf) (-> this tpage2 load-file data) (-> this tpage2 len) (-> this tpage2 heap) 4)
|
|
)
|
|
)
|
|
(set! (-> *level* loading-level) s5-0)
|
|
(set! (-> *texture-pool* allocate-func) s4-0)
|
|
(set! (-> *texture-relocate-later* memcpy) s3-0)
|
|
(set! loading-level s2-0)
|
|
)
|
|
(set! (-> this loading-flag) #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 11 of type bigmap
|
|
;; WARN: Return type mismatch texture-page vs symbol.
|
|
(defmethod loaded? ((this bigmap))
|
|
(the-as symbol (and (-> *bigmap* progress-minimap) (-> *bigmap* progress-minimap2)))
|
|
)
|
|
|
|
;; definition for method 12 of type bigmap
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod draw! ((this bigmap) (arg0 int) (arg1 int) (arg2 int) (arg3 int))
|
|
(when (and (= (file-status (-> this bigmap-image) "world-map" (the-as int (-> this load-index))) 'active)
|
|
(not (-> this loading-flag))
|
|
)
|
|
(with-dma-buffer-add-bucket ((s2-0 (-> *display* frames (-> *display* on-screen) global-buf))
|
|
(bucket-id hud-draw-hud-alpha)
|
|
)
|
|
(dma-buffer-add-gs-set s2-0
|
|
(scissor-1 (new 'static 'gs-scissor
|
|
:scax0 (+ arg0 -1792)
|
|
:scay0 (+ arg1 -1840)
|
|
:scax1 (+ arg2 -1792)
|
|
:scay1 (+ arg3 -1840)
|
|
)
|
|
)
|
|
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
|
|
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
|
|
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
|
|
)
|
|
(let ((v1-14 (the-as object (-> this bigmap-image art-group)))
|
|
(f0-0 (-> *video-params* relative-x-scale))
|
|
)
|
|
(set! (-> this scroll x)
|
|
(fmax 0.0 (fmin (-> this scroll x) (the float (+ (-> (the-as (pointer uint32) v1-14) 2) -513))))
|
|
)
|
|
(set! (-> this scroll y)
|
|
(fmax
|
|
0.0
|
|
(fmin (-> this scroll y) (+ (- -1.0 (* 416.0 f0-0)) (the float (-> (the-as (pointer uint32) v1-14) 3))))
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((get-horizontal-flip-flag *blit-displays-work*)
|
|
(set! (-> this x0) (+ arg2 -1792))
|
|
(set! (-> this x1) (+ arg0 -1792))
|
|
)
|
|
(else
|
|
(set! (-> this x0) (+ arg0 -1792))
|
|
(set! (-> this x1) (+ arg2 -1792))
|
|
)
|
|
)
|
|
(set! (-> this y0) arg1)
|
|
(set! (-> this y1) arg3)
|
|
(bigmap-method-20 this s2-0)
|
|
(when (!= (-> this load-index) (bigmap-id none))
|
|
(when (= (-> this y0) 1840)
|
|
(let ((s0-1 (-> s2-0 base))
|
|
(s1-1 (get-texture big-map-icons progress-minimap))
|
|
)
|
|
(when s1-1
|
|
(set! (-> (the-as (pointer uint128) s0-1) 0) (-> this adgif-tmpl dma-vif quad))
|
|
(set! (-> (the-as (pointer uint128) s0-1) 1) (-> this adgif-tmpl quad 1))
|
|
(adgif-shader<-texture-simple! (the-as adgif-shader (&+ s0-1 32)) s1-1)
|
|
(&+! (-> s2-0 base) 112)
|
|
)
|
|
(if (not s1-1)
|
|
(format 0 "ERROR: bigmap: mini-map-icons texture is #f~%")
|
|
)
|
|
)
|
|
(let ((s1-2 (-> *minimap* engine alive-list)))
|
|
(while s1-2
|
|
(let ((a2-11 s1-2))
|
|
(when (logtest? (-> a2-11 class flags) (minimap-flag bigmap bigmap-only))
|
|
(if (not (and (logtest? (minimap-flag local-only) (-> a2-11 class flags))
|
|
(not (logtest? (the-as minimap-flag (logand (bigmap-flag ctywide waswide wasall desert) (-> this global-flags)))
|
|
(-> a2-11 class flags)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(draw-from-minimap this s2-0 a2-11)
|
|
)
|
|
)
|
|
)
|
|
(set! s1-2 (-> s1-2 next))
|
|
)
|
|
)
|
|
(let ((s1-3 (new 'stack-no-clear 'vector))
|
|
(f30-0 (-> *video-params* relative-x-scale))
|
|
)
|
|
(vector-z-quaternion! s1-3 (-> *target* control quat))
|
|
(vector-xz-normalize! s1-3 -1.0)
|
|
(set! (-> s1-3 y) 0.0)
|
|
(set! (-> s1-3 w) 0.0)
|
|
(let ((sv-96 (the-as (inline-array vector4w) (-> s2-0 base)))
|
|
(sv-100 (get-texture map-target-marker progress-minimap))
|
|
(sv-104 (new 'stack-no-clear 'matrix))
|
|
)
|
|
(let ((sv-112 (the int (* 56.0 f30-0))))
|
|
)
|
|
(let ((sv-120 (-> *video-params* relative-x-scale-reciprical)))
|
|
(when sv-100
|
|
(set-pos! this (target-pos 0))
|
|
(let ((s0-3 (new 'stack 'vector4w)))
|
|
0.0
|
|
(set! (-> s0-3 quad) (-> this pos quad))
|
|
(bigmap-method-18 this (&-> s0-3 x))
|
|
(let ((f0-15 (cond
|
|
((get-horizontal-flip-flag *blit-displays-work*)
|
|
(set! f30-0 (- f30-0))
|
|
(+ (the float (+ (- 2304 (-> s0-3 x)) (-> this x1))) (-> this scroll x))
|
|
)
|
|
(else
|
|
(- (the float (+ (-> s0-3 x) 1792 (-> this x0))) (-> this scroll x))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> sv-104 rvec) (* (-> s1-3 z) f30-0) 0.0 (- (-> s1-3 x)) 0.0)
|
|
(set-vector! (-> sv-104 uvec) 0.0 1.0 0.0 0.0)
|
|
(set-vector! (-> sv-104 fvec) (* (-> s1-3 x) f30-0) 0.0 (-> s1-3 z) 1.0)
|
|
(set-vector!
|
|
(-> sv-104 trans)
|
|
f0-15
|
|
0.0
|
|
(+ 1840.0 (* (- (the float (-> s0-3 y)) (-> this scroll y)) sv-120))
|
|
1.0
|
|
)
|
|
)
|
|
)
|
|
(let* ((v1-83 (mod (-> *display* real-clock frame-counter) 360))
|
|
(f0-26 (+ 1.5 (* 0.25 (cos (* 182.04445 (the float v1-83))))))
|
|
(f0-27 (* 7.0 f0-26))
|
|
)
|
|
(cond
|
|
((or (= (-> this load-index) (bigmap-id sewer-met-hum)) (= (-> this load-index) (bigmap-id sewer-hum-kg)))
|
|
(set-vector! (-> this corner 0) (- f0-27) 0.0 0.0 1.0)
|
|
(set-vector! (-> this corner 1) 0.0 0.0 f0-27 1.0)
|
|
(set-vector! (-> this corner 2) 0.0 0.0 (- f0-27) 1.0)
|
|
(set-vector! (-> this corner 3) f0-27 0.0 0.0 1.0)
|
|
)
|
|
(else
|
|
(set-vector! (-> this corner 0) 0.0 0.0 (- f0-27) 1.0)
|
|
(set-vector! (-> this corner 1) f0-27 0.0 0.0 1.0)
|
|
(set-vector! (-> this corner 2) (- f0-27) 0.0 0.0 1.0)
|
|
(set-vector! (-> this corner 3) 0.0 0.0 f0-27 1.0)
|
|
)
|
|
)
|
|
)
|
|
(vector-matrix*! (-> this corner 0) (-> this corner 0) sv-104)
|
|
(vector-matrix*! (-> this corner 1) (-> this corner 1) sv-104)
|
|
(vector-matrix*! (-> this corner 2) (-> this corner 2) sv-104)
|
|
(vector-matrix*! (-> this corner 3) (-> this corner 3) sv-104)
|
|
(set! (-> sv-96 0 quad) (-> this adgif-tmpl dma-vif quad))
|
|
(set! (-> sv-96 1 quad) (-> this adgif-tmpl quad 1))
|
|
(adgif-shader<-texture-simple! (the-as adgif-shader (-> sv-96 2)) sv-100)
|
|
(set! (-> sv-96 7 quad) (-> this draw-tmpl dma-vif quad))
|
|
(set! (-> sv-96 8 quad) (-> this draw-tmpl quad 1))
|
|
(set-vector! (-> sv-96 9) 0 255 255 128)
|
|
(set-vector! (-> sv-96 10) 0 0 0 0)
|
|
(set-vector!
|
|
(-> sv-96 11)
|
|
(the int (* 16.0 (-> this corner 0 x)))
|
|
(the int (* 16.0 (-> this corner 0 z)))
|
|
#xffffff
|
|
0
|
|
)
|
|
(set-vector! (-> sv-96 12) 256 0 0 0)
|
|
(set-vector!
|
|
(-> sv-96 13)
|
|
(the int (* 16.0 (-> this corner 1 x)))
|
|
(the int (* 16.0 (-> this corner 1 z)))
|
|
#xffffff
|
|
0
|
|
)
|
|
(set-vector! (-> sv-96 14) 0 256 0 0)
|
|
(set-vector!
|
|
(-> sv-96 15)
|
|
(the int (* 16.0 (-> this corner 2 x)))
|
|
(the int (* 16.0 (-> this corner 2 z)))
|
|
#xffffff
|
|
0
|
|
)
|
|
(set-vector! (-> sv-96 16) 256 256 0 0)
|
|
(set-vector!
|
|
(-> sv-96 17)
|
|
(the int (* 16.0 (-> this corner 3 x)))
|
|
(the int (* 16.0 (-> this corner 3 z)))
|
|
#xffffff
|
|
0
|
|
)
|
|
(&+! (-> s2-0 base) 288)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(dma-buffer-add-gs-set s2-0 (scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f)))
|
|
)
|
|
(when (= (-> this load-index) (bigmap-id none))
|
|
(let ((s3-1
|
|
(new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
|
|
)
|
|
)
|
|
(let ((f30-2 (* 0.0024038462 (the float (- arg3 arg1)))))
|
|
(set-scale! s3-1 f30-2)
|
|
(set-width! s3-1 (the int (* 400.0 f30-2)))
|
|
(let ((a0-100 s3-1))
|
|
(set! (-> a0-100 flags) (font-flags kerning middle large))
|
|
)
|
|
(let ((s5-1 print-game-text))
|
|
(format (clear *temp-string*) "~S" (lookup-text! *common-text* (text-id map-data-unavailable) #f))
|
|
(let* ((f0-63 (s5-1 *temp-string* s3-1 #t 44 (bucket-id hud-draw-hud-alpha)))
|
|
(v1-142 s3-1)
|
|
(a0-106 (- 256 (the int (* 200.0 f30-2))))
|
|
(a1-52 (- 208 (the int (/ f0-63 2))))
|
|
)
|
|
(set! (-> v1-142 origin x) (the float a0-106))
|
|
(set! (-> v1-142 origin y) (the float a1-52))
|
|
)
|
|
)
|
|
)
|
|
(let ((s5-2 print-game-text))
|
|
(format (clear *temp-string*) "~S" (lookup-text! *common-text* (text-id map-data-unavailable) #f))
|
|
(s5-2 *temp-string* s3-1 #f 44 (bucket-id hud-draw-hud-alpha))
|
|
)
|
|
)
|
|
)
|
|
(+! (-> this goal-time) (* 16.0 (seconds-per-frame)))
|
|
(set-dirty-mask! (-> *level* level-default) 4 #x1a400 0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 13 of type bigmap
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod handle-cpad-input ((this bigmap))
|
|
(let ((v1-1 (-> this bigmap-image art-group))
|
|
(s5-0 (-> *cpad-list* cpads 0))
|
|
)
|
|
(when v1-1
|
|
(let ((f30-0 (analog-input (the-as int (-> s5-0 leftx)) 128.0 32.0 110.0 4.0))
|
|
(f0-0 (analog-input (the-as int (-> s5-0 lefty)) 128.0 32.0 110.0 4.0))
|
|
)
|
|
(+! (-> this scroll x) f30-0)
|
|
(+! (-> this scroll y) f0-0)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 16 of type bigmap
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod set-map-indices! ((this bigmap))
|
|
(let ((s5-0 (level-get-target-inside *level*)))
|
|
(let ((v1-2 (-> *setting-control* user-current bigmap-level)))
|
|
(cond
|
|
(v1-2
|
|
(cond
|
|
((= v1-2 'city)
|
|
(set! (-> this bigmap-index) (bigmap-id city))
|
|
0
|
|
)
|
|
((= v1-2 'comb)
|
|
(set! (-> this bigmap-index) (bigmap-id comb))
|
|
)
|
|
((= v1-2 'desert)
|
|
(set! (-> this bigmap-index) (bigmap-id desert))
|
|
)
|
|
((= v1-2 'factory)
|
|
(set! (-> this bigmap-index) (bigmap-id factory))
|
|
)
|
|
((= v1-2 'forest)
|
|
(set! (-> this bigmap-index) (bigmap-id forest))
|
|
)
|
|
((= v1-2 'metalhead-city)
|
|
(set! (-> this bigmap-index) (bigmap-id mhcity))
|
|
)
|
|
((= v1-2 'mine)
|
|
(set! (-> this bigmap-index) (bigmap-id mine))
|
|
)
|
|
((= v1-2 'nest)
|
|
(set! (-> this bigmap-index) (bigmap-id nest))
|
|
)
|
|
((= v1-2 'nest2)
|
|
(set! (-> this bigmap-index) (bigmap-id nest2))
|
|
)
|
|
((= v1-2 'none)
|
|
(set! (-> this bigmap-index) (bigmap-id none))
|
|
)
|
|
((= v1-2 'precursor1)
|
|
(set! (-> this bigmap-index) (bigmap-id precursor1))
|
|
)
|
|
((= v1-2 'precursor2)
|
|
(set! (-> this bigmap-index) (bigmap-id precursor2))
|
|
)
|
|
((= v1-2 'rubble)
|
|
(set! (-> this bigmap-index) (bigmap-id rubble))
|
|
)
|
|
((= v1-2 'sewer-hum-kg)
|
|
(set! (-> this bigmap-index) (bigmap-id sewer-hum-kg))
|
|
)
|
|
((= v1-2 'sewer-kg-met)
|
|
(set! (-> this bigmap-index) (bigmap-id sewer-kg-met))
|
|
)
|
|
((= v1-2 'sewer-met-hum)
|
|
(set! (-> this bigmap-index) (bigmap-id sewer-met-hum))
|
|
)
|
|
((= v1-2 'stadium)
|
|
(set! (-> this bigmap-index) (bigmap-id stadium))
|
|
)
|
|
((= v1-2 'temple1)
|
|
(set! (-> this bigmap-index) (bigmap-id temple1))
|
|
)
|
|
((= v1-2 'temple2)
|
|
(set! (-> this bigmap-index) (bigmap-id temple2))
|
|
)
|
|
((= v1-2 'temple3)
|
|
(set! (-> this bigmap-index) (bigmap-id temple3))
|
|
)
|
|
((= v1-2 'temple4)
|
|
(set! (-> this bigmap-index) (bigmap-id temple4))
|
|
)
|
|
((= v1-2 'tower)
|
|
(set! (-> this bigmap-index) (bigmap-id tower))
|
|
)
|
|
((= v1-2 'volcano)
|
|
(set! (-> this bigmap-index) (bigmap-id volcano))
|
|
)
|
|
((= v1-2 'wascity)
|
|
(set! (-> this bigmap-index) (bigmap-id wascity))
|
|
)
|
|
)
|
|
)
|
|
(s5-0
|
|
(set! (-> this bigmap-index) (-> s5-0 info bigmap-id))
|
|
)
|
|
)
|
|
)
|
|
(if (and (= (level-status? *level* 'ctywide #f) 'active)
|
|
(not (or (= (-> s5-0 name) 'mhcitya) (= (-> s5-0 name) 'mhcityb)))
|
|
)
|
|
(set! (-> this bigmap-index) (-> ctyport bigmap-id))
|
|
)
|
|
)
|
|
(cond
|
|
((= (-> this bigmap-index) (bigmap-id temple1))
|
|
(cond
|
|
((task-node-closed? (game-task-node factory-boss-resolution))
|
|
(set! (-> this load-index) (bigmap-id temple4))
|
|
)
|
|
((task-node-closed? (game-task-node desert-oasis-defense-resolution))
|
|
(set! (-> this load-index) (bigmap-id temple3))
|
|
)
|
|
((task-node-closed? (game-task-node volcano-darkeco-resolution))
|
|
(set! (-> this load-index) (bigmap-id temple2))
|
|
)
|
|
(else
|
|
(set! (-> this load-index) (bigmap-id temple1))
|
|
)
|
|
)
|
|
)
|
|
((= (-> this bigmap-index) (bigmap-id precursor1))
|
|
(if (task-node-closed? (game-task-node comb-wild-ride-resolution))
|
|
(set! (-> this load-index) (bigmap-id precursor2))
|
|
(set! (-> this load-index) (bigmap-id precursor1))
|
|
)
|
|
)
|
|
((= (-> this bigmap-index) (bigmap-id nest))
|
|
(if (task-node-closed? (game-task-node nest-eggs-gas))
|
|
(set! (-> this load-index) (bigmap-id nest2))
|
|
(set! (-> this load-index) (bigmap-id nest))
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> this load-index) (-> this bigmap-index))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 14 of type bigmap
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch bigmap-flag vs none.
|
|
(defmethod enable-drawing ((this bigmap))
|
|
(set-map-indices! this)
|
|
(vector-copy! (-> this offset) (-> *bigmap-info-array* data (-> this load-index)))
|
|
(let ((s4-0 (target-pos 0))
|
|
(s5-0 (-> this offset))
|
|
)
|
|
(cond
|
|
((= (-> this load-index) (bigmap-id sewer-hum-kg))
|
|
(let ((a0-10 (level-get *level* 'sewa)))
|
|
(if a0-10
|
|
(set! (-> a0-10 info bigmap-id) (bigmap-id sewer-hum-kg))
|
|
)
|
|
)
|
|
(set! (-> this scroll x) (+ -256.0 (* (- (-> s4-0 y) (-> s5-0 y)) (-> s5-0 w))))
|
|
(set! (-> this scroll y) (- 624.0 (* (- (-> s4-0 x) (-> s5-0 x)) (-> s5-0 w))))
|
|
)
|
|
((= (-> this load-index) (bigmap-id sewer-kg-met))
|
|
(let ((a0-14 (level-get *level* 'sewa)))
|
|
(if a0-14
|
|
(set! (-> a0-14 info bigmap-id) (bigmap-id sewer-kg-met))
|
|
)
|
|
)
|
|
(set! (-> this scroll x) (+ -256.0 (* (- (-> s4-0 x) (-> s5-0 x)) (-> s5-0 w))))
|
|
(set! (-> this scroll y) (+ -208.0 (* (- (-> s4-0 z) (-> s5-0 y)) (-> s5-0 w))))
|
|
)
|
|
((= (-> this load-index) (bigmap-id sewer-met-hum))
|
|
(let ((a0-18 (level-get *level* 'sewa)))
|
|
(if a0-18
|
|
(set! (-> a0-18 info bigmap-id) (bigmap-id sewer-met-hum))
|
|
)
|
|
)
|
|
(set! (-> this scroll x) (+ -256.0 (* (- (-> s4-0 y) (-> s5-0 y)) (-> s5-0 w))))
|
|
(set! (-> this scroll y) (- 624.0 (* (- (-> s4-0 x) (-> s5-0 x)) (-> s5-0 w))))
|
|
)
|
|
(else
|
|
(set! (-> this scroll x) (+ -256.0 (* (- (-> s4-0 x) (-> s5-0 x)) (-> s5-0 w))))
|
|
(set! (-> this scroll y) (+ -208.0 (* (- (-> s4-0 z) (-> s5-0 y)) (-> s5-0 w))))
|
|
)
|
|
)
|
|
)
|
|
(set! (-> this drawing-flag) #t)
|
|
(set! (-> this loading-flag) #f)
|
|
(set! (-> this global-flags) (bigmap-flag))
|
|
(if (= (level-status? *level* 'ctywide #f) 'active)
|
|
(logior! (-> this global-flags) (bigmap-flag ctywide))
|
|
)
|
|
(if (= (level-status? *level* 'waswide #f) 'active)
|
|
(logior! (-> this global-flags) (bigmap-flag wasall))
|
|
)
|
|
(if (= (level-status? *level* 'wasall #f) 'active)
|
|
(logior! (-> this global-flags) (bigmap-flag waswide))
|
|
)
|
|
(if (= (level-status? *level* 'desert #f) 'active)
|
|
(logior! (-> this global-flags) (bigmap-flag desert))
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 15 of type bigmap
|
|
(defmethod disable-drawing ((this bigmap))
|
|
(set-pending-file
|
|
(-> this bigmap-image)
|
|
(the-as string #f)
|
|
(the-as int (-> this bigmap-index))
|
|
(process->handle *dproc*)
|
|
0.0
|
|
)
|
|
(set-pending-file (-> this tpage) (the-as string #f) 0 (process->handle *dproc*) 0.0)
|
|
(set-pending-file (-> this tpage2) (the-as string #f) 0 (process->handle *dproc*) 0.0)
|
|
(let ((v1-12 #f))
|
|
(while (not v1-12)
|
|
(update (-> this bigmap-image))
|
|
(update (-> this tpage))
|
|
(update (-> this tpage2))
|
|
(set! v1-12 (and (= (-> this bigmap-image status) 'inactive)
|
|
(= (-> this tpage status) 'inactive)
|
|
(= (-> this tpage2 status) 'inactive)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(when (-> this progress-minimap)
|
|
(unload-page *texture-pool* (-> this progress-minimap))
|
|
(set! (-> (&-> *level* level-default texture-page 6) 0) (the-as texture-page 0))
|
|
(set! (-> this progress-minimap) #f)
|
|
)
|
|
(when (-> this progress-minimap2)
|
|
(unload-page *texture-pool* (-> this progress-minimap2))
|
|
(set! (-> (&-> *level* level-default texture-page 3) 0) (the-as texture-page 0))
|
|
(set! (-> this progress-minimap2) #f)
|
|
)
|
|
(set! (-> this drawing-flag) #f)
|
|
(set! (-> this loading-flag) #f)
|
|
0
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(kmemopen global "bigmap-struct")
|
|
|
|
;; definition for symbol *bigmap*, type bigmap
|
|
(define *bigmap* (new 'global 'bigmap))
|
|
|
|
;; failed to figure out what this is:
|
|
(kmemclose)
|