Files
water111 637990314b wip: better stack var support (#4222)
Closes #736

---------

Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
2026-04-19 00:14:44 +02:00

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)