[graphics] TIE extractor (#1026)

* temp

* temp

* wip

* more progress on the instance asm

* first half of tie extraction, up to dma lists

* more tie extraction

* first part figured out maybe

* bp1 loop seems to work, bp2 loop does not

* bp1 and bp2 appear working. sadly ip is needed

* ip1 outline, not working ip2

* just kidding, ip2 seems to work

* extraction seems to work

* basic rendering working

* tie fixes

* performance optimization of tie renderer

* hook up tie to engine

* fix more bugs

* cleanup and perf improvements

* fix tests

* ref tests

* mm256i for gcc

* CLANG

* windows

* more compile fixes

* fix fast time of day

* small fixes

* fix after merge

* clang
This commit is contained in:
water111
2021-12-26 12:33:51 -05:00
committed by GitHub
parent ff61d32095
commit a8342aef31
71 changed files with 13430 additions and 733 deletions
+1 -5
View File
@@ -776,7 +776,7 @@
(when (and
(< 0.0 (-> self fact-info-target eco-level))
(zero? (logand (-> self state-flags) 512))
(zero? (logand (-> self draw status) 6))
(zero? (logand (-> self draw status) (draw-status drwf01 drwf02)))
(not (movie?))
(rand-vu-percent?
(lerp-scale
@@ -968,7 +968,3 @@
0
(none)
)
+1 -1
View File
@@ -355,7 +355,7 @@
(quad uint128 :offset 0)
(data uint64 :offset 0)
(cmds uint64 :offset 8)
(cmd uint8 :offset 8)
(cmd gs-reg :offset 8)
(x uint32 :offset 0)
(y uint32 :offset 4)
(z uint32 :offset 8)
+3 -2
View File
@@ -149,6 +149,7 @@
(color-index-qwc uint32 :dynamic :offset-assert 148)
(generic-next-clear uint128 :offset 96)
(generic-count-clear uint128 :offset 80)
(geometry-override prototype-tie 4 :offset 16)
)
:method-count-assert 9
:size-assert #x94
@@ -163,7 +164,7 @@
(format #t "~Tflags: ~D~%" (-> obj flags))
(format #t "~Tin-level: ~D~%" (-> obj in-level))
(format #t "~Tutextures: ~D~%" (-> obj utextures))
(format #t "~Tgeometry[4] @ #x~X~%" (-> obj geometry))
(format #t "~Tgeometry[4] @ #x~X~%" (-> obj geometry-override))
(format #t "~Tdists: #<vector @ #x~X>~%" (-> obj dists))
(format #t "~Trdists: #<vector @ #x~X>~%" (-> obj rdists))
(format #t "~Tnext[4] @ #x~X~%" (-> obj next))
@@ -203,7 +204,7 @@
:size-assert #x10
:flag-assert #xa00000010
(:methods
(TODO-RENAME-9 (_type_) none 9)
(login (_type_) none 9)
)
)
+3 -3
View File
@@ -3,11 +3,11 @@
;; definition for method 9 of type prototype-array-tie
;; INFO: Return type mismatch prototype-array-tie vs none.
(defmethod TODO-RENAME-9 prototype-array-tie ((obj prototype-array-tie))
(defmethod login prototype-array-tie ((obj prototype-array-tie))
(dotimes (s5-0 (-> obj length))
(let ((s4-0 (-> obj array-data s5-0)))
(dotimes (s3-0 4)
(let ((a0-1 (-> s4-0 geometry s3-0)))
(let ((a0-1 (-> s4-0 geometry-override s3-0)))
(if (nonzero? a0-1)
(login a0-1)
)
@@ -65,7 +65,7 @@
;; definition for method 8 of type prototype-bucket-tie
(defmethod mem-usage prototype-bucket-tie ((obj prototype-bucket-tie) (arg0 memory-usage-block) (arg1 int))
(dotimes (s3-0 4)
(let ((a0-1 (-> obj geometry s3-0)))
(let ((a0-1 (-> obj geometry-override s3-0)))
(if (nonzero? a0-1)
(mem-usage a0-1 arg0 (logior arg1 1))
)
+15 -15
View File
@@ -3,21 +3,21 @@
;; definition of type tie-fragment
(deftype tie-fragment (drawable)
((gif-ref uint32 :offset 4)
(point-ref uint32 :offset 8)
(color-index uint16 :offset 12)
(base-colors uint8 :offset 14)
(tex-count uint16 :offset-assert 32)
(gif-count uint16 :offset-assert 34)
(vertex-count uint16 :offset-assert 36)
(color-count uint16 :offset-assert 38)
(num-tris uint16 :offset-assert 40)
(num-dverts uint16 :offset-assert 42)
(dp-ref uint32 :offset-assert 44)
(dp-qwc uint32 :offset-assert 48)
(generic-ref uint32 :offset-assert 52)
(generic-count uint32 :offset-assert 56)
(debug-lines basic :offset-assert 60)
((gif-ref (inline-array adgif-shader) :offset 4)
(point-ref uint32 :offset 8)
(color-index uint16 :offset 12)
(base-colors uint8 :offset 14)
(tex-count uint16 :offset-assert 32)
(gif-count uint16 :offset-assert 34)
(vertex-count uint16 :offset-assert 36)
(color-count uint16 :offset-assert 38)
(num-tris uint16 :offset-assert 40)
(num-dverts uint16 :offset-assert 42)
(dp-ref uint32 :offset-assert 44)
(dp-qwc uint32 :offset-assert 48)
(generic-ref uint32 :offset-assert 52)
(generic-count uint32 :offset-assert 56)
(debug-lines (array vector-array) :offset-assert 60)
)
:method-count-assert 18
:size-assert #x40
+897
View File
@@ -0,0 +1,897 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for function tie-init-buffers
;; INFO: Return type mismatch int vs none.
(defun tie-init-buffers ((arg0 dma-buffer))
(let ((gp-0 (-> *display* frames (-> *display* on-screen) frame bucket-group 9)))
(when (!= gp-0 (-> gp-0 last))
(let* ((s5-0 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s4-1 (-> s5-0 base))
)
(tie-init-engine
s5-0
(new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))
0
)
(let ((v1-8 (the-as object (-> s5-0 base))))
(set! (-> (the-as dma-packet v1-8) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> gp-0 next)))
(set! (-> (the-as dma-packet v1-8) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-8) vif1) (new 'static 'vif-tag))
(set! (-> s5-0 base) (&+ (the-as pointer v1-8) 16))
)
(set! (-> gp-0 next) (the-as uint s4-1))
)
)
)
(let ((gp-1 (-> *display* frames (-> *display* on-screen) frame bucket-group 9)))
(when (!= gp-1 (-> gp-1 last))
(let* ((s4-2 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s5-1 (-> s4-2 base))
)
(tie-end-buffer s4-2)
(let ((v1-19 (-> s4-2 base)))
(let ((a0-17 (the-as object (-> s4-2 base))))
(set! (-> (the-as dma-packet a0-17) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet a0-17) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-17) vif1) (new 'static 'vif-tag))
(set! (-> s4-2 base) (&+ (the-as pointer a0-17) 16))
)
(set! (-> (the-as (pointer uint32) (-> gp-1 last)) 1) (the-as uint s5-1))
(set! (-> gp-1 last) (the-as (pointer dma-tag) v1-19))
)
)
)
)
(let ((gp-2 (-> *display* frames (-> *display* on-screen) frame bucket-group 16)))
(when (!= gp-2 (-> gp-2 last))
(let* ((s5-2 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s4-4 (-> s5-2 base))
)
(tie-init-engine
s5-2
(new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))
0
)
(let ((v1-28 (the-as object (-> s5-2 base))))
(set! (-> (the-as dma-packet v1-28) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> gp-2 next)))
(set! (-> (the-as dma-packet v1-28) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-28) vif1) (new 'static 'vif-tag))
(set! (-> s5-2 base) (&+ (the-as pointer v1-28) 16))
)
(set! (-> gp-2 next) (the-as uint s4-4))
)
)
)
(let ((gp-3 (-> *display* frames (-> *display* on-screen) frame bucket-group 16)))
(when (!= gp-3 (-> gp-3 last))
(let* ((s4-5 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s5-3 (-> s4-5 base))
)
(tie-end-buffer s4-5)
(let ((v1-39 (-> s4-5 base)))
(let ((a0-36 (the-as object (-> s4-5 base))))
(set! (-> (the-as dma-packet a0-36) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet a0-36) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-36) vif1) (new 'static 'vif-tag))
(set! (-> s4-5 base) (&+ (the-as pointer a0-36) 16))
)
(set! (-> (the-as (pointer uint32) (-> gp-3 last)) 1) (the-as uint s5-3))
(set! (-> gp-3 last) (the-as (pointer dma-tag) v1-39))
)
)
)
)
(let ((gp-4 (-> *display* frames (-> *display* on-screen) frame bucket-group 8)))
(when (!= gp-4 (-> gp-4 last))
(let* ((s5-4 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s4-7 (-> s5-4 base))
)
(tie-near-init-engine
s5-4
(new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
0
)
(let ((v1-48 (the-as object (-> s5-4 base))))
(set! (-> (the-as dma-packet v1-48) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> gp-4 next)))
(set! (-> (the-as dma-packet v1-48) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-48) vif1) (new 'static 'vif-tag))
(set! (-> s5-4 base) (&+ (the-as pointer v1-48) 16))
)
(set! (-> gp-4 next) (the-as uint s4-7))
)
)
)
(let ((gp-5 (-> *display* frames (-> *display* on-screen) frame bucket-group 8)))
(when (!= gp-5 (-> gp-5 last))
(let* ((s4-8 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s5-5 (-> s4-8 base))
)
(tie-near-end-buffer s4-8)
(let ((v1-59 (-> s4-8 base)))
(let ((a0-55 (the-as object (-> s4-8 base))))
(set! (-> (the-as dma-packet a0-55) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet a0-55) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-55) vif1) (new 'static 'vif-tag))
(set! (-> s4-8 base) (&+ (the-as pointer a0-55) 16))
)
(set! (-> (the-as (pointer uint32) (-> gp-5 last)) 1) (the-as uint s5-5))
(set! (-> gp-5 last) (the-as (pointer dma-tag) v1-59))
)
)
)
)
(let ((gp-6 (-> *display* frames (-> *display* on-screen) frame bucket-group 15)))
(when (!= gp-6 (-> gp-6 last))
(let* ((s5-6 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s4-10 (-> s5-6 base))
)
(tie-near-init-engine
s5-6
(new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
0
)
(let ((v1-68 (the-as object (-> s5-6 base))))
(set! (-> (the-as dma-packet v1-68) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> gp-6 next)))
(set! (-> (the-as dma-packet v1-68) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-68) vif1) (new 'static 'vif-tag))
(set! (-> s5-6 base) (&+ (the-as pointer v1-68) 16))
)
(set! (-> gp-6 next) (the-as uint s4-10))
)
)
)
(let ((gp-7 (-> *display* frames (-> *display* on-screen) frame bucket-group 15)))
(when (!= gp-7 (-> gp-7 last))
(let* ((s4-11 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s5-7 (-> s4-11 base))
)
(tie-near-end-buffer s4-11)
(let ((v1-79 (-> s4-11 base)))
(let ((a0-74 (the-as object (-> s4-11 base))))
(set! (-> (the-as dma-packet a0-74) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet a0-74) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-74) vif1) (new 'static 'vif-tag))
(set! (-> s4-11 base) (&+ (the-as pointer a0-74) 16))
)
(set! (-> (the-as (pointer uint32) (-> gp-7 last)) 1) (the-as uint s5-7))
(set! (-> gp-7 last) (the-as (pointer dma-tag) v1-79))
)
)
)
)
0
(none)
)
;; definition of type tie-instance-debug
(deftype tie-instance-debug (structure)
((max-instance uint32 :offset-assert 0)
(min-instance uint32 :offset-assert 4)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition for method 3 of type tie-instance-debug
(defmethod inspect tie-instance-debug ((obj tie-instance-debug))
(format #t "[~8x] ~A~%" obj 'tie-instance-debug)
(format #t "~Tmax-instance: ~D~%" (-> obj max-instance))
(format #t "~Tmin-instance: ~D~%" (-> obj min-instance))
obj
)
;; definition for symbol *tie*, type tie-instance-debug
(define *tie* (new 'global 'tie-instance-debug))
;; definition for function tie-debug-between
(defun tie-debug-between ((arg0 uint) (arg1 uint))
(set! (-> *instance-tie-work* test-id) arg1)
(set! (-> *instance-tie-work* test-id2) arg0)
arg0
)
;; definition for function tie-debug-one
(defun tie-debug-one ((arg0 uint) (arg1 uint))
(set! (-> *instance-tie-work* test-id) (+ arg1 -1 arg0))
(set! (-> *instance-tie-work* test-id2) arg0)
arg0
)
;; definition for function walk-tie-generic-prototypes
;; INFO: Return type mismatch symbol vs none.
(defun walk-tie-generic-prototypes ()
(none)
)
;; definition for symbol *pke-hack*, type vector
(define *pke-hack* (new 'global 'vector))
;; definition for function draw-inline-array-instance-tie
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function draw-inline-array-prototype-tie-generic-asm
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function draw-inline-array-prototype-tie-asm
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function draw-inline-array-prototype-tie-near-asm
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for method 9 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
(defmethod login drawable-tree-instance-tie ((obj drawable-tree-instance-tie))
(if (nonzero? (-> obj prototypes prototype-array-tie))
(login (-> obj prototypes prototype-array-tie))
)
(dotimes (s5-0 (-> obj length))
(login (-> obj data s5-0))
)
obj
)
;; definition for function draw-drawable-tree-instance-tie
;; INFO: Return type mismatch int vs none.
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr0, r0]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr1, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, a0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr0]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr1]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr0, r0]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr1, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, a0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr0]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr1]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr0, r0]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr1, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, a0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr0]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr1]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr0, r0]
;; WARN: Unsupported inline assembly instruction kind - [mtpc pcr1, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, a0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mtc0 Perf, r0]
;; WARN: Unsupported inline assembly instruction kind - [sync.l]
;; WARN: Unsupported inline assembly instruction kind - [sync.p]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr0]
;; WARN: Unsupported inline assembly instruction kind - [mfpc a0, pcr1]
;; Used lq/sq
(defun draw-drawable-tree-instance-tie ((arg0 drawable-tree-instance-tie) (arg1 level))
(local-vars
(r0-0 none)
(a0-31 int)
(a0-33 int)
(a0-46 int)
(a0-48 int)
(a0-62 int)
(a0-64 int)
(a0-82 int)
(a0-84 int)
(sv-16 int)
)
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near tie generic))
(set! (-> *instance-tie-work* first-generic-prototype) (the-as uint 0))
(set! (-> *instance-tie-work* wind-vectors) (-> arg0 prototypes wind-vectors))
(let ((s4-0 (+ (-> arg0 length) -1)))
(when (nonzero? s4-0)
(dotimes (s3-0 s4-0)
(let* ((v1-10 (-> arg0 data s3-0))
(a0-5 (-> arg0 data (+ s3-0 1)))
(a1-2 (/ (-> (the-as drawable-inline-array-node v1-10) data 0 id) 8))
(a0-7 (/ (-> (the-as drawable-inline-array-node a0-5) data 0 id) 8))
(a1-4 (+ a1-2 #x38b0 #x70000000))
(a0-9 (+ a0-7 #x38b0 #x70000000))
)
(draw-node-cull
(the-as pointer a0-9)
(the-as pointer a1-4)
(-> (the-as drawable-inline-array-node v1-10) data)
(-> (the-as drawable-inline-array-node v1-10) length)
)
)
)
)
(let* ((v1-16 (-> arg0 data s4-0))
(s4-1 (-> arg0 prototypes prototype-array-tie))
(s5-1 (-> s4-1 length))
)
(dotimes (a0-11 s5-1)
(let ((a1-7 (-> s4-1 array-data a0-11)))
(set! (-> a1-7 next-clear) (the-as uint128 0))
(set! (-> a1-7 generic-count-clear) (the-as uint128 0))
(set! (-> a1-7 generic-next-clear) (the-as uint128 0))
)
0
)
(let* ((s1-0 (-> (the-as drawable-inline-array-instance-tie v1-16) data))
(s0-0 (&-> (the-as terrain-context #x70000000) work background vis-list (/ (-> s1-0 0 id) 8)))
(s3-1 (-> *display* frames (-> *display* on-screen) frame global-buf))
)
(set! sv-16 (-> (the-as drawable-inline-array-node v1-16) length))
(when (nonzero? sv-16)
(let* ((v1-21 (logand (the-as int *gsf-buffer*) 8191))
(v1-23
(logand (the-as int (&- (logand (the-as int (&-> (-> s4-1 data) -512)) 8191) (the-as uint v1-21))) 8191)
)
)
(set! *instance-tie-work-copy* (the-as instance-tie-work (+ (the-as int *gsf-buffer*) v1-23)))
)
(let ((s2-0 (-> *display* frames (-> *display* on-screen) frame global-buf base)))
(quad-copy! (the-as pointer *instance-tie-work-copy*) (the-as pointer *instance-tie-work*) 28)
(set! (-> *instance-tie-work-copy* wait-to-spr) (the-as uint 0))
(set! (-> *instance-tie-work-copy* wait-from-spr) (the-as uint 0))
(let* ((v1-32 (-> *perf-stats* data 9))
(a0-28 (-> v1-32 ctrl))
)
(+! (-> v1-32 count) 1)
(b! (zero? a0-28) cfg-12 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 r0-0)
(.mtpc pcr1 r0-0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-28)
)
(.sync.l)
(.sync.p)
(label cfg-12)
0
(let ((t9-2 draw-inline-array-instance-tie)
(a3-1 s3-1)
)
(t9-2 s0-0 (the-as drawable s1-0) sv-16 a3-1)
)
(let ((v1-35 (-> *perf-stats* data 9)))
(b! (zero? (-> v1-35 ctrl)) cfg-14 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mfpc a0-31 pcr0)
(+! (-> v1-35 accum0) a0-31)
(.mfpc a0-33 pcr1)
(+! (-> v1-35 accum1) a0-33)
)
(label cfg-14)
0
(update-wait-stats
(-> *perf-stats* data 9)
(the-as uint 0)
(-> *instance-tie-work-copy* wait-to-spr)
(-> *instance-tie-work-copy* wait-from-spr)
)
(let ((v1-42 (-> *instance-tie-work-copy* min-dist quad)))
(set! (-> *instance-tie-work* min-dist quad) v1-42)
)
(set! (-> *instance-tie-work* flags) (-> *instance-tie-work-copy* flags))
(let ((a0-38 *dma-mem-usage*))
(when (nonzero? a0-38)
(set! (-> a0-38 length) (max 10 (-> a0-38 length)))
(set! (-> a0-38 data 9 name) "tie-fragment")
(+! (-> a0-38 data 9 count) 1)
(+!
(-> a0-38 data 9 used)
(&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s2-0))
)
(set! (-> a0-38 data 9 total) (-> a0-38 data 9 used))
)
)
)
(when (logtest? *vu1-enable-user* (vu1-renderer-mask generic))
(when (logtest? (-> *instance-tie-work* flags) 2)
(let ((s2-1 (-> *display* frames (-> *display* on-screen) frame global-buf base)))
(set! (-> *prototype-tie-work* generic-wait-to-spr) (the-as uint 0))
(set! (-> *prototype-tie-work* generic-wait-from-spr) (the-as uint 0))
(set! (-> *instance-tie-work* first-generic-prototype) (the-as uint (-> s3-1 base)))
(let* ((v1-60 (-> *perf-stats* data 10))
(a0-43 (-> v1-60 ctrl))
)
(+! (-> v1-60 count) 1)
(b! (zero? a0-43) cfg-20 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 r0-0)
(.mtpc pcr1 r0-0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-43)
)
(.sync.l)
(.sync.p)
(label cfg-20)
0
(draw-inline-array-prototype-tie-generic-asm s3-1 s5-1 s4-1)
(let ((v1-63 (-> *perf-stats* data 10)))
(b! (zero? (-> v1-63 ctrl)) cfg-22 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mfpc a0-46 pcr0)
(+! (-> v1-63 accum0) a0-46)
(.mfpc a0-48 pcr1)
(+! (-> v1-63 accum1) a0-48)
)
(label cfg-22)
0
(update-wait-stats
(-> *perf-stats* data 10)
(the-as uint 0)
(-> *prototype-tie-work* generic-wait-to-spr)
(-> *prototype-tie-work* generic-wait-from-spr)
)
(let ((a0-51 *dma-mem-usage*))
(when (nonzero? a0-51)
(set! (-> a0-51 length) (max 18 (-> a0-51 length)))
(set! (-> a0-51 data 17 name) "tie-generic")
(+! (-> a0-51 data 17 count) 1)
(+!
(-> a0-51 data 17 used)
(&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s2-1))
)
(set! (-> a0-51 data 17 total) (-> a0-51 data 17 used))
)
)
)
)
)
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie))
(let ((s3-2 (-> *display* frames (-> *display* on-screen) frame global-buf base)))
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie))
(let* ((s1-1 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s2-2 (-> s1-1 base))
)
(set! (-> *prototype-tie-work* wait-to-spr) (the-as uint 0))
(set! (-> *prototype-tie-work* wait-from-spr) (the-as uint 0))
(let* ((v1-85 (-> *perf-stats* data 11))
(a0-59 (-> v1-85 ctrl))
)
(+! (-> v1-85 count) 1)
(b! (zero? a0-59) cfg-28 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 r0-0)
(.mtpc pcr1 r0-0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-59)
)
(.sync.l)
(.sync.p)
(label cfg-28)
0
(draw-inline-array-prototype-tie-asm s1-1 s5-1 s4-1)
(let ((v1-88 (-> *perf-stats* data 11)))
(b! (zero? (-> v1-88 ctrl)) cfg-30 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mfpc a0-62 pcr0)
(+! (-> v1-88 accum0) a0-62)
(.mfpc a0-64 pcr1)
(+! (-> v1-88 accum1) a0-64)
)
(label cfg-30)
0
(update-wait-stats
(-> *perf-stats* data 11)
(the-as uint 0)
(-> *prototype-tie-work* wait-to-spr)
(-> *prototype-tie-work* wait-from-spr)
)
(let ((a3-11 (-> s1-1 base)))
(let ((v1-94 (the-as object (-> s1-1 base))))
(set! (-> (the-as dma-packet v1-94) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-94) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-94) vif1) (new 'static 'vif-tag))
(set! (-> s1-1 base) (&+ (the-as pointer v1-94) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(the-as bucket-id (if (zero? (-> arg1 index))
9
16
)
)
s2-2
(the-as (pointer dma-tag) a3-11)
)
)
)
)
(let ((v1-100 *dma-mem-usage*))
(when (nonzero? v1-100)
(set! (-> v1-100 length) (max 10 (-> v1-100 length)))
(set! (-> v1-100 data 9 name) "tie-fragment")
(+! (-> v1-100 data 9 count) 1)
(+!
(-> v1-100 data 9 used)
(&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s3-2))
)
(set! (-> v1-100 data 9 total) (-> v1-100 data 9 used))
)
)
)
)
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near))
(let ((s3-3 (-> *display* frames (-> *display* on-screen) frame global-buf base)))
(let* ((s1-2 (-> *display* frames (-> *display* on-screen) frame global-buf))
(s2-3 (-> s1-2 base))
)
(set! (-> *prototype-tie-work* near-wait-to-spr) (the-as uint 0))
(set! (-> *prototype-tie-work* near-wait-from-spr) (the-as uint 0))
(let* ((v1-114 (-> *perf-stats* data 12))
(a0-79 (-> v1-114 ctrl))
)
(+! (-> v1-114 count) 1)
(b! (zero? a0-79) cfg-39 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mtpc pcr0 r0-0)
(.mtpc pcr1 r0-0)
(.sync.l)
(.sync.p)
(.mtc0 Perf a0-79)
)
(.sync.l)
(.sync.p)
(label cfg-39)
0
(draw-inline-array-prototype-tie-near-asm s1-2 s5-1 s4-1)
(let ((v1-117 (-> *perf-stats* data 12)))
(b! (zero? (-> v1-117 ctrl)) cfg-41 :delay (nop!))
(.mtc0 Perf r0-0)
(.sync.l)
(.sync.p)
(.mfpc a0-82 pcr0)
(+! (-> v1-117 accum0) a0-82)
(.mfpc a0-84 pcr1)
(+! (-> v1-117 accum1) a0-84)
)
(label cfg-41)
0
(update-wait-stats
(-> *perf-stats* data 12)
(the-as uint 0)
(-> *prototype-tie-work* near-wait-to-spr)
(-> *prototype-tie-work* near-wait-from-spr)
)
(let ((a3-16 (-> s1-2 base)))
(let ((v1-123 (the-as object (-> s1-2 base))))
(set! (-> (the-as dma-packet v1-123) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-123) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-123) vif1) (new 'static 'vif-tag))
(set! (-> s1-2 base) (&+ (the-as pointer v1-123) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) frame bucket-group)
(the-as bucket-id (if (zero? (-> arg1 index))
8
15
)
)
s2-3
(the-as (pointer dma-tag) a3-16)
)
)
)
(let ((a0-92 *dma-mem-usage*))
(when (nonzero? a0-92)
(set! (-> a0-92 length) (max 16 (-> a0-92 length)))
(set! (-> a0-92 data 15 name) "tie-near")
(+! (-> a0-92 data 15 count) 1)
(+!
(-> a0-92 data 15 used)
(&- (-> *display* frames (-> *display* on-screen) frame global-buf base) (the-as uint s3-3))
)
(set! (-> a0-92 data 15 total) (-> a0-92 data 15 used))
)
)
)
)
)
)
)
)
0
)
(set! (-> arg1 closest-object 5) (-> *instance-tie-work* min-dist x))
0
(none)
)
;; definition for method 10 of type drawable-tree-instance-tie
;; INFO: Return type mismatch drawable-tree-instance-tie vs none.
(defmethod draw drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 drawable-tree-instance-tie) (arg1 display-frame))
(let* ((v1-1 (-> *background-work* tie-tree-count))
(a1-2 (-> (the-as terrain-context #x70000000) bsp lev-index))
(a1-5 (-> *level* level a1-2))
)
(set! (-> *background-work* tie-trees v1-1) obj)
(set! (-> *background-work* tie-levels v1-1) a1-5)
)
(+! (-> *background-work* tie-tree-count) 1)
(none)
)
;; definition for method 14 of type drawable-tree-instance-tie
;; INFO: Return type mismatch symbol vs none.
(defmethod collect-stats drawable-tree-instance-tie ((obj drawable-tree-instance-tie))
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near tie generic))
(-> obj data (+ (-> obj length) -1))
(let ((v1-8 (-> obj prototypes prototype-array-tie)))
(dotimes (a0-1 (-> v1-8 length))
(let ((a1-2 (-> v1-8 array-data a0-1)))
(when (logtest? *vu1-enable-user* (vu1-renderer-mask generic))
(let ((a2-3 0)
(a3-0 3)
)
(while (>= a3-0 a2-3)
(let ((t0-2 (-> a1-2 generic-count a2-3))
(t2-0 (-> a1-2 geometry-override a2-3))
)
(when (nonzero? t0-2)
(let ((t1-3 (the-as object (-> t2-0 data)))
(t2-1 (-> t2-0 length))
)
(+! (-> *terrain-stats* tie-generic groups) 1)
(+! (-> *terrain-stats* tie-generic fragments) t2-1)
(+! (-> *terrain-stats* tie-generic instances) t0-2)
(dotimes (t3-9 t2-1)
(let ((t5-0 (* (-> (the-as tie-fragment t1-3) num-tris) t0-2))
(t4-5 (* (-> (the-as tie-fragment t1-3) num-dverts) t0-2))
)
(+! (-> *terrain-stats* tie-generic tris) t5-0)
(+! (-> *terrain-stats* tie-generic dverts) t4-5)
)
(set! t1-3 (&+ (the-as tie-fragment t1-3) 64))
)
)
)
)
(+! a2-3 1)
)
)
)
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie))
(let ((a2-9 1)
(a3-1 3)
)
(while (>= a3-1 a2-9)
(let ((t0-6 (-> a1-2 count a2-9))
(t2-2 (-> a1-2 geometry-override a2-9))
)
(when (nonzero? t0-6)
(let ((t1-8 (the-as object (-> t2-2 data)))
(t2-3 (-> t2-2 length))
)
(+! (-> *terrain-stats* tie groups) 1)
(+! (-> *terrain-stats* tie fragments) t2-3)
(+! (-> *terrain-stats* tie instances) t0-6)
(dotimes (t3-19 t2-3)
(let ((t5-5 (* (-> (the-as tie-fragment t1-8) num-tris) t0-6))
(t4-12 (* (-> (the-as tie-fragment t1-8) num-dverts) t0-6))
)
(+! (-> *terrain-stats* tie tris) t5-5)
(+! (-> *terrain-stats* tie dverts) t4-12)
)
(set! t1-8 (&+ (the-as tie-fragment t1-8) 64))
)
)
)
)
(+! a2-9 1)
)
)
)
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near))
(let ((a2-14 (-> a1-2 count 0))
(a3-2 (-> a1-2 geometry-override 0))
)
(when (nonzero? a2-14)
(let ((a1-3 (the-as object (-> a3-2 data)))
(a3-3 (-> a3-2 length))
)
(+! (-> *terrain-stats* tie-near groups) 1)
(+! (-> *terrain-stats* tie-near fragments) a3-3)
(+! (-> *terrain-stats* tie-near instances) a2-14)
(dotimes (t0-19 a3-3)
(let ((t2-4 (* (-> (the-as tie-fragment a1-3) num-tris) a2-14))
(t1-15 (* (-> (the-as tie-fragment a1-3) num-dverts) a2-14))
)
(+! (-> *terrain-stats* tie-near tris) t2-4)
(+! (-> *terrain-stats* tie-near dverts) t1-15)
)
(set! a1-3 (&+ (the-as tie-fragment a1-3) 64))
)
)
)
)
)
)
)
)
)
(none)
)
;; definition for method 15 of type drawable-tree-instance-tie
;; INFO: Return type mismatch symbol vs none.
(defmethod debug-draw drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 drawable) (arg1 display-frame))
(-> obj data (+ (-> obj length) -1))
(let* ((s5-0 (-> obj prototypes prototype-array-tie))
(s4-0 (-> s5-0 length))
)
(dotimes (s3-0 s4-0)
(let ((a1-1 (-> s5-0 array-data s3-0 geometry-override 0)))
(debug-draw a1-1 a1-1 arg1)
)
)
)
(none)
)
;; definition for method 11 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
;; INFO: Return type mismatch int vs none.
(defmethod collide-with-box drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 int) (arg1 collide-list))
(collide-with-box (-> obj data 0) (-> obj length) arg1)
0
(none)
)
;; definition for method 12 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
;; INFO: Return type mismatch int vs none.
(defmethod collide-y-probe drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 int) (arg1 collide-list))
(collide-y-probe (-> obj data 0) (-> obj length) arg1)
0
(none)
)
;; definition for method 13 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
;; INFO: Return type mismatch int vs none.
(defmethod collide-ray drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 int) (arg1 collide-list))
(collide-ray (-> obj data 0) (-> obj length) arg1)
0
(none)
)
;; definition for method 11 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
;; INFO: Return type mismatch int vs none.
(defmethod collide-with-box drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 int) (arg1 collide-list))
(collide-with-box (-> obj data 0) (-> obj length) arg1)
0
(none)
)
;; definition for method 12 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
;; INFO: Return type mismatch int vs none.
(defmethod collide-y-probe drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 int) (arg1 collide-list))
(collide-y-probe (-> obj data 0) (-> obj length) arg1)
0
(none)
)
;; definition for method 13 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
;; INFO: Return type mismatch int vs none.
(defmethod collide-ray drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 int) (arg1 collide-list))
(collide-ray (-> obj data 0) (-> obj length) arg1)
0
(none)
)
;; definition for method 11 of type drawable-inline-array-instance-tie
;; INFO: Return type mismatch int vs none.
(defmethod collide-with-box drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie) (arg0 int) (arg1 collide-list))
(collide-with-box (the-as instance-tie (-> obj data)) (-> obj length) arg1)
0
(none)
)
;; definition for method 12 of type drawable-inline-array-instance-tie
;; INFO: Return type mismatch int vs none.
(defmethod collide-y-probe drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie) (arg0 int) (arg1 collide-list))
(collide-y-probe (the-as instance-tie (-> obj data)) (-> obj length) arg1)
0
(none)
)
;; definition for method 13 of type drawable-inline-array-instance-tie
;; INFO: Return type mismatch int vs none.
(defmethod collide-ray drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie) (arg0 int) (arg1 collide-list))
(collide-ray (the-as instance-tie (-> obj data)) (-> obj length) arg1)
0
(none)
)
;; definition (debug) for function tie-test-cam-restore
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defun-debug tie-test-cam-restore ()
(let ((a0-0 (new-stack-vector0))
(a1-0 (new-stack-matrix0))
)
(set! (-> a0-0 x) 1246582.6)
(set! (-> a0-0 y) 57026.02)
(set! (-> a0-0 z) -490734.78)
(set! (-> a0-0 w) 1.0)
(set! (-> a1-0 vector 0 x) -0.9873)
(set! (-> a1-0 vector 0 y) 0.0)
(set! (-> a1-0 vector 0 z) -0.1587)
(set! (-> a1-0 vector 0 w) 0.0)
(set! (-> a1-0 vector 1 x) 0.0014)
(set! (-> a1-0 vector 1 y) 0.9999)
(set! (-> a1-0 vector 1 z) -0.0092)
(set! (-> a1-0 vector 1 w) 0.0)
(set! (-> a1-0 vector 2 x) 0.1587)
(set! (-> a1-0 vector 2 y) -0.0093)
(set! (-> a1-0 vector 2 z) -0.9872)
(set! (-> a1-0 vector 2 w) 0.0)
(set! (-> a1-0 vector 3 x) 0.0)
(set! (-> a1-0 vector 3 y) 0.0)
(set! (-> a1-0 vector 3 z) 0.0)
(set! (-> a1-0 vector 3 w) 1.0)
(debug-set-camera-pos-rot! a0-0 a1-0)
)
(send-event *camera* 'set-fov 11650.845)
(none)
)
+424
View File
@@ -0,0 +1,424 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type tie-near-consts
(deftype tie-near-consts (structure)
((extra qword :inline :offset-assert 0)
(gifbufs qword :inline :offset-assert 16)
(clrbufs qword :inline :offset-assert 32)
(adgif gs-gif-tag :inline :offset-assert 48)
(strgif gs-gif-tag :inline :offset-assert 64)
(fangif gs-gif-tag :inline :offset-assert 80)
(hvdfoffs vector :inline :offset-assert 96)
(invhscale vector :inline :offset-assert 112)
(guard vector :inline :offset-assert 128)
(atest ad-cmd 2 :inline :offset-assert 144)
(atest-tra ad-cmd :inline :offset 144)
(atest-def ad-cmd :inline :offset 160)
)
:method-count-assert 9
:size-assert #xb0
:flag-assert #x9000000b0
)
;; definition for method 3 of type tie-near-consts
(defmethod inspect tie-near-consts ((obj tie-near-consts))
(format #t "[~8x] ~A~%" obj 'tie-near-consts)
(format #t "~Textra: #<qword @ #x~X>~%" (-> obj extra))
(format #t "~Tgifbufs: #<qword @ #x~X>~%" (-> obj gifbufs))
(format #t "~Tclrbufs: #<qword @ #x~X>~%" (-> obj clrbufs))
(format #t "~Tadgif: #<qword @ #x~X>~%" (-> obj adgif))
(format #t "~Tstrgif: #<qword @ #x~X>~%" (-> obj strgif))
(format #t "~Tfangif: #<qword @ #x~X>~%" (-> obj fangif))
(format #t "~Thvdfoffs: #<vector @ #x~X>~%" (-> obj hvdfoffs))
(format #t "~Tinvhscale: #<vector @ #x~X>~%" (-> obj invhscale))
(format #t "~Tguard: #<vector @ #x~X>~%" (-> obj guard))
(format #t "~Tatest[2] @ #x~X~%" (-> obj atest))
(format #t "~Tatest-tra: #<ad-cmd @ #x~X>~%" (-> obj atest))
(format #t "~Tatest-def: #<ad-cmd @ #x~X>~%" (-> obj atest-def))
obj
)
;; definition for symbol tie-near-vu1-block, type vu-function
(define tie-near-vu1-block (new 'static 'vu-function :length #x6f8 :qlength #x37c))
;; definition for function tie-near-init-consts
;; INFO: Return type mismatch vector vs none.
;; Used lq/sq
(defun tie-near-init-consts ((arg0 tie-near-consts) (arg1 int))
(set! (-> arg0 adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1))
(set! (-> arg0 adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))
(set! (-> arg0 atest-tra cmds) (the-as uint 71))
(set! (-> arg0 atest-tra data) (the-as uint #x5026b))
(set! (-> arg0 atest-def cmds) (the-as uint 71))
(set! (-> arg0 atest-def data) (the-as uint #x5000e))
(cond
((zero? *subdivide-draw-mode*)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)
)
)
)
((= *subdivide-draw-mode* 3)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1)
:nreg #x3
)
)
)
((= *subdivide-draw-mode* 1)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :fge #x1 :abe arg1)
)
)
)
((= *subdivide-draw-mode* 2)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1)
)
)
)
)
(set! (-> arg0 strgif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(set! (-> arg0 fangif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe arg1)
)
)
(set! (-> arg0 fangif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(let ((f1-0 8388894.0)
(f2-0 8389078.0)
(f0-0 8389262.0)
)
(set! (-> arg0 gifbufs vector4w x) (the-as int f0-0))
(set! (-> arg0 gifbufs vector4w y) (the-as int f2-0))
(set! (-> arg0 gifbufs vector4w z) (the-as int f0-0))
(set! (-> arg0 gifbufs vector4w w) (the-as int f2-0))
(set! (-> arg0 extra vector4w x) (the-as int (+ f1-0 f2-0 f0-0)))
(set! (-> arg0 extra vector4w y) (the-as int 0.0))
(set! (-> arg0 extra vector4w z) (the-as int (+ f1-0 f2-0 f0-0)))
)
(set! (-> arg0 clrbufs vector4w x) 198)
(set! (-> arg0 clrbufs vector4w y) 242)
(set! (-> arg0 clrbufs vector4w z) 198)
(set! (-> arg0 clrbufs vector4w w) 242)
(let ((v1-41 *math-camera*))
(set! (-> arg0 invhscale quad) (-> v1-41 inv-hmge-scale quad))
(set! (-> arg0 hvdfoffs quad) (-> v1-41 hvdf-off quad))
(set! (-> arg0 guard quad) (-> v1-41 guard quad))
)
(none)
)
;; definition for function tie-near-init-engine
;; INFO: Return type mismatch int vs none.
(defun tie-near-init-engine ((arg0 dma-buffer) (arg1 gs-test) (arg2 int))
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near))
(dma-buffer-add-vu-function arg0 tie-near-vu1-block 1)
(let ((s4-0 11))
(let* ((v1-2 arg0)
(a0-2 (-> v1-2 base))
)
(set! (-> (the-as (pointer int64) a0-2)) (logior #x10000000 (shr (shl s4-0 48) 48)))
(let ((a1-4 #x5000000))
(s.w! (+ a0-2 8) a1-4)
)
(let ((a1-6 (logior #x6c0003c6 (shr (shl s4-0 56) 40))))
(s.w! (+ a0-2 12) a1-6)
)
(set! (-> v1-2 base) (&+ a0-2 16))
)
(tie-near-init-consts (the-as tie-near-consts (-> arg0 base)) arg2)
(&+! (-> arg0 base) (* s4-0 16))
)
(let* ((v1-5 arg0)
(a0-6 (-> v1-5 base))
)
(set! (-> (the-as (pointer int64) a0-6)) #x10000000)
(let ((a1-9 #x15000008))
(s.w! (+ a0-6 8) a1-9)
)
(let ((a1-10 #x13000000))
(s.w! (+ a0-6 12) a1-10)
)
(set! (-> v1-5 base) (&+ a0-6 16))
)
(let* ((v1-6 arg0)
(a0-8 (-> v1-6 base))
)
(set! (-> (the-as (pointer int64) a0-8)) #x10000002)
(s.w! (+ a0-8 8) 0)
(let ((a1-12 #x30000000))
(s.w! (+ a0-8 12) a1-12)
)
(set! (-> v1-6 base) (&+ a0-8 16))
)
(let ((v1-7 (-> arg0 base)))
(set! (-> (the-as (pointer int32) v1-7)) #x4b000000)
(let ((a0-11 #x4b000000))
(s.w! (+ v1-7 4) a0-11)
)
(let ((a0-12 #x4b000000))
(s.w! (+ v1-7 8) a0-12)
)
(let ((a0-13 #x4b000000))
(s.w! (+ v1-7 12) a0-13)
)
(let ((a0-14 #x3000000))
(s.w! (+ v1-7 16) a0-14)
)
(let ((a0-15 #x200002c))
(s.w! (+ v1-7 20) a0-15)
)
(let ((a0-16 #x5000000))
(s.w! (+ v1-7 24) a0-16)
)
(let ((a0-17 #x1000404))
(s.w! (+ v1-7 28) a0-17)
)
(set! (-> arg0 base) (&+ v1-7 32))
)
0
)
(none)
)
;; definition for function tie-near-end-buffer
;; INFO: Return type mismatch int vs none.
(defun tie-near-end-buffer ((arg0 dma-buffer))
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie-near))
(let* ((v1-2 arg0)
(a1-0 (-> v1-2 base))
)
(set! (-> (the-as (pointer int64) a1-0)) #x10000002)
(s.w! (+ a1-0 8) 0)
(let ((a2-1 #x50000002))
(s.w! (+ a1-0 12) a2-1)
)
(set! (-> v1-2 base) (&+ a1-0 16))
)
(let* ((v1-3 arg0)
(a1-2 (-> v1-3 base))
)
(set! (-> (the-as (pointer uint64) a1-2)) (make-u128 0 (the-as uint #x1000000000008001)))
(let ((a2-4 (the-as uint #xeeeeeeeeeeeeeeee)))
(s.d! (+ a1-2 8) a2-4)
)
(set! (-> v1-3 base) (&+ a1-2 16))
)
(let* ((v1-4 arg0)
(a1-4 (-> v1-4 base))
)
(set! (-> (the-as (pointer int64) a1-4)) #x5026b)
(let ((a2-6 71))
(s.d! (+ a1-4 8) a2-6)
)
(set! (-> v1-4 base) (&+ a1-4 16))
)
(let* ((v1-5 arg0)
(a1-6 (-> v1-5 base))
)
(set! (-> (the-as (pointer int64) a1-6)) #x10000002)
(let ((a2-8 #x20000000))
(s.w! (+ a1-6 8) a2-8)
)
(s.w! (+ a1-6 12) 0)
(set! (-> v1-5 base) (&+ a1-6 16))
)
(let* ((v1-6 arg0)
(a0-1 (-> v1-6 base))
)
(set! (-> (the-as (pointer int32) a0-1)) #x15000004)
(let ((a1-9 #x5000000))
(s.w! (+ a0-1 4) a1-9)
)
(let ((a1-10 #x13000000))
(s.w! (+ a0-1 8) a1-10)
)
(let ((a1-11 #x30000000))
(s.w! (+ a0-1 12) a1-11)
)
(s.w! (+ a0-1 16) 0)
(s.w! (+ a0-1 20) 0)
(s.w! (+ a0-1 24) 0)
(s.w! (+ a0-1 28) 0)
(set! (-> v1-6 base) (&+ a0-1 32))
)
0
)
(none)
)
;; definition for function tie-near-make-perspective-matrix
(defun tie-near-make-perspective-matrix ((arg0 matrix))
(column-scale-matrix! arg0 (-> *math-camera* hmge-scale) (-> *math-camera* camera-temp))
)
;; definition for function tie-near-int-reg
(defun tie-near-int-reg ((arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
"zero"
)
((= v1-0 1)
"itemp"
)
((= v1-0 2)
"delta"
)
((= v1-0 3)
"dest-0"
)
((= v1-0 4)
"dest-1"
)
((= v1-0 5)
"dest-2"
)
((= v1-0 6)
"dest-3"
)
((= v1-0 7)
"delta-ptr"
)
((= v1-0 8)
"prev"
)
((= v1-0 9)
"itemp2"
)
)
)
)
;; definition for function tie-near-float-reg
(defun tie-near-float-reg ((arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
"zero"
)
((= v1-0 1)
"vtx-0"
)
((= v1-0 2)
"vtx-1"
)
((= v1-0 3)
"vtx-2"
)
((= v1-0 4)
"vtx-3"
)
((= v1-0 5)
"hvtx-0"
)
((= v1-0 6)
"hvtx-1"
)
((= v1-0 7)
"hvtx-2"
)
((= v1-0 8)
"hvtx-3"
)
((= v1-0 9)
"tex-0"
)
((= v1-0 10)
"tex-1"
)
((= v1-0 11)
"tex-2"
)
((= v1-0 12)
"tex-3"
)
((= v1-0 13)
"deltas"
)
((= v1-0 14)
"invh"
)
((= v1-0 15)
"hvdfcl"
)
((= v1-0 16)
"hvdfnc"
)
((= v1-0 17)
"--"
)
((= v1-0 18)
"--"
)
((= v1-0 19)
"--"
)
((= v1-0 20)
"--"
)
((= v1-0 19)
"--"
)
((= v1-0 20)
"--"
)
((= v1-0 21)
"gifbuf"
)
((= v1-0 22)
"clrbuf"
)
((= v1-0 23)
"extra"
)
((= v1-0 24)
"inds"
)
((= v1-0 25)
"--"
)
((= v1-0 26)
"--"
)
((= v1-0 27)
"morph"
)
((= v1-0 28)
"xyzofs"
)
((= v1-0 29)
"--"
)
((= v1-0 30)
"--"
)
((= v1-0 31)
"--"
)
)
)
)
+754
View File
@@ -0,0 +1,754 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for method 9 of type tie-fragment
(defmethod login tie-fragment ((obj tie-fragment))
(let ((s5-0 (-> obj gif-ref))
(s4-0 (/ (-> obj tex-count) (the-as uint 5)))
)
(dotimes (s3-0 (the-as int s4-0))
(adgif-shader-login-no-remap (-> s5-0 s3-0))
)
)
obj
)
;; definition for method 3 of type drawable-inline-array-instance-tie
(defmethod inspect drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tlength: ~D~%" (-> obj length))
(format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data))
(dotimes (s5-0 (-> obj length))
(format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0))
)
obj
)
;; definition for method 5 of type drawable-inline-array-instance-tie
;; INFO: Return type mismatch uint vs int.
(defmethod asize-of drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie))
(the-as int (+ (-> drawable-inline-array-instance-tie size) (* (+ (-> obj length) -1) 64)))
)
;; definition for method 9 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
(defmethod login drawable-tree-instance-tie ((obj drawable-tree-instance-tie))
obj
)
;; definition for method 9 of type drawable-tree-instance-tie
;; INFO: this function exists in multiple non-identical object files
;; INFO: Return type mismatch symbol vs drawable-tree-instance-tie.
(defmethod login drawable-tree-instance-tie ((obj drawable-tree-instance-tie))
(dotimes (s5-0 (-> obj length))
(login (-> obj data s5-0))
)
(the-as drawable-tree-instance-tie #f)
)
;; definition for method 3 of type prototype-tie
(defmethod inspect prototype-tie ((obj prototype-tie))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tlength: ~D~%" (-> obj length))
(format #t "~Tdata[~D]: @ #x~X~%" (-> obj length) (-> obj data))
(dotimes (s5-0 (-> obj length))
(format #t "~T [~D] ~A~%" s5-0 (-> obj data s5-0))
)
obj
)
;; definition for method 9 of type prototype-tie
(defmethod login prototype-tie ((obj prototype-tie))
(dotimes (s5-0 (-> obj length))
(login (-> obj data s5-0))
)
obj
)
;; definition for method 8 of type drawable-tree-instance-tie
(defmethod mem-usage drawable-tree-instance-tie ((obj drawable-tree-instance-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) (symbol->string 'drawable-group))
(+! (-> arg0 data 0 count) 1)
(let ((v1-7 32))
(+! (-> arg0 data 0 used) v1-7)
(+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))
)
(dotimes (s3-0 (-> obj length))
(mem-usage (-> obj data s3-0) arg0 arg1)
)
(mem-usage (-> obj prototypes prototype-array-tie) arg0 (logior arg1 1))
obj
)
;; definition for method 8 of type tie-fragment
(defmethod mem-usage tie-fragment ((obj tie-fragment) (arg0 memory-usage-block) (arg1 int))
(when (logtest? arg1 2)
(let ((v1-3 (* (-> obj color-count) 4))
(a0-2 (cond
((logtest? arg1 4)
20
)
((logtest? arg1 8)
21
)
(else
22
)
)
)
)
(+! (-> arg0 data a0-2 count) 1)
(+! (-> arg0 data a0-2 used) v1-3)
(+! (-> arg0 data a0-2 total) (logand -4 (+ v1-3 3)))
)
(set! (-> arg0 length) (max 23 (-> arg0 length)))
(set! obj obj)
(goto cfg-13)
)
(set! (-> arg0 length) (max 18 (-> arg0 length)))
(set! (-> arg0 data 9 name) "tie-fragment")
(set! (-> arg0 data 10 name) "tie-gif")
(set! (-> arg0 data 11 name) "tie-points")
(set! (-> arg0 data 12 name) "tie-colors")
(set! (-> arg0 data 14 name) "tie-debug")
(set! (-> arg0 data 13 name) "tie-draw-points")
(set! (-> arg0 data 17 name) "tie-generic")
(+! (-> arg0 data 9 count) 1)
(let ((v1-21 (asize-of obj)))
(+! (-> arg0 data 9 used) v1-21)
(+! (-> arg0 data 9 total) (logand -16 (+ v1-21 15)))
)
(let ((v1-26 (* (-> obj gif-count) 16)))
(+! (-> arg0 data 10 count) (-> obj tex-count))
(+! (-> arg0 data 10 used) v1-26)
(+! (-> arg0 data 10 total) (logand -16 (+ v1-26 15)))
)
(let ((v1-31 (* (-> obj vertex-count) 16)))
(+! (-> arg0 data 11 count) (-> obj vertex-count))
(+! (-> arg0 data 11 used) v1-31)
(+! (-> arg0 data 11 total) (logand -16 (+ v1-31 15)))
)
(let ((v1-36 (* (-> obj dp-qwc) 16)))
(+! (-> arg0 data 13 count) (* (-> obj dp-qwc) 16))
(+! (-> arg0 data 13 used) v1-36)
(+! (-> arg0 data 13 total) (logand -16 (+ v1-36 15)))
)
(let ((v1-41 (* (-> obj generic-count) 16)))
(+! (-> arg0 data 17 count) 1)
(+! (-> arg0 data 17 used) v1-41)
(+! (-> arg0 data 17 total) (logand -16 (+ v1-41 15)))
)
(when (nonzero? (-> obj debug-lines))
(dotimes (s4-0 (-> obj debug-lines length))
(+! (-> arg0 data 14 count) (-> (the-as (pointer int32) (-> obj debug-lines s4-0)) 0))
(let ((v1-52 (asize-of (the-as basic (-> obj debug-lines s4-0)))))
(+! (-> arg0 data 12 used) v1-52)
(+! (-> arg0 data 12 total) (logand -16 (+ v1-52 15)))
)
)
)
(label cfg-13)
obj
)
;; definition for method 8 of type instance-tie
(defmethod mem-usage instance-tie ((obj instance-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 19 (-> arg0 length)))
(set! (-> arg0 data 18 name) "instance-tie")
(+! (-> arg0 data 18 count) 1)
(let ((v1-6 (asize-of obj)))
(+! (-> arg0 data 18 used) v1-6)
(+! (-> arg0 data 18 total) (logand -16 (+ v1-6 15)))
)
(when (nonzero? (-> obj error))
(set! (-> arg0 length) (max 24 (-> arg0 length)))
(set! (-> arg0 data 23 name) "instance-tie-colors*")
(set! (-> arg0 data 19 name) "instance-tie-colors0")
(set! (-> arg0 data 20 name) "instance-tie-colors1")
(set! (-> arg0 data 21 name) "instance-tie-colors2")
(set! (-> arg0 data 22 name) "instance-tie-colors3")
(+! (-> arg0 data 23 count) 1)
(let ((s3-0 (-> obj bucket-ptr)))
(+ (-> arg0 data 19 used) (-> arg0 data 20 used) (-> arg0 data 21 used) (-> arg0 data 22 used))
(dotimes (s2-0 4)
(let ((a0-10 (-> s3-0 geometry-override s2-0)))
(when (nonzero? a0-10)
(let ((t9-1 (method-of-object a0-10 mem-usage))
(a1-2 arg0)
(v1-29 s2-0)
)
(t9-1 a0-10 a1-2 (logior
(logior
(cond
((= v1-29 1)
4
)
((= v1-29 2)
8
)
((= v1-29 3)
16
)
(else
0
)
)
2
)
arg1
)
)
)
)
)
)
)
)
obj
)
;; definition for method 8 of type drawable-inline-array-instance-tie
(defmethod mem-usage drawable-inline-array-instance-tie ((obj drawable-inline-array-instance-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) (symbol->string 'drawable-group))
(+! (-> arg0 data 0 count) 1)
(let ((v1-7 32))
(+! (-> arg0 data 0 used) v1-7)
(+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))
)
(dotimes (s3-0 (-> obj length))
(mem-usage (-> obj data s3-0) arg0 arg1)
)
obj
)
;; definition for method 8 of type prototype-tie
(defmethod mem-usage prototype-tie ((obj prototype-tie) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) (symbol->string 'drawable-group))
(+! (-> arg0 data 0 count) 1)
(let ((v1-7 32))
(+! (-> arg0 data 0 used) v1-7)
(+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15)))
)
(dotimes (s3-0 (-> obj length))
(mem-usage (-> obj data s3-0) arg0 arg1)
)
obj
)
;; definition for method 5 of type prototype-tie
;; INFO: Return type mismatch uint vs int.
(defmethod asize-of prototype-tie ((obj prototype-tie))
(the-as int (+ (-> prototype-tie size) (* (+ (-> obj length) -1) 64)))
)
;; definition of type tie-consts
(deftype tie-consts (structure)
((data uint32 24 :offset-assert 0)
(vector vector 6 :inline :offset 0)
(quads uint128 6 :offset 0)
(adgif gs-gif-tag :inline :offset 0)
(strgif gs-gif-tag :inline :offset 16)
(extra vector :inline :offset 32)
(gifbufs vector :inline :offset 48)
(clrbufs qword :inline :offset 64)
(misc qword :inline :offset 80)
(atestgif gs-gif-tag :inline :offset 96)
(atest ad-cmd 2 :inline :offset 112)
(atest-tra ad-cmd :inline :offset 112)
(atest-def ad-cmd :inline :offset 128)
)
:method-count-assert 9
:size-assert #x90
:flag-assert #x900000090
)
;; definition for method 3 of type tie-consts
(defmethod inspect tie-consts ((obj tie-consts))
(format #t "[~8x] ~A~%" obj 'tie-consts)
(format #t "~Tdata[24] @ #x~X~%" (-> obj data))
(format #t "~Tvector[6] @ #x~X~%" (-> obj data))
(format #t "~Tquads[6] @ #x~X~%" (-> obj data))
(format #t "~Tadgif: #<qword @ #x~X>~%" (-> obj data))
(format #t "~Tstrgif: #<qword @ #x~X>~%" (-> obj strgif))
(format #t "~Textra: #<qword @ #x~X>~%" (-> obj extra))
(format #t "~Tgifbufs: #<qword @ #x~X>~%" (-> obj gifbufs))
(format #t "~Tclrbufs: #<qword @ #x~X>~%" (-> obj clrbufs))
(format #t "~Tmisc: #<qword @ #x~X>~%" (-> obj misc))
(format #t "~Tatestgif: #<qword @ #x~X>~%" (-> obj atestgif))
(format #t "~Tatest[2] @ #x~X~%" (-> obj atest))
(format #t "~Tatest-tra: #<ad-cmd @ #x~X>~%" (-> obj atest))
(format #t "~Tatest-def: #<ad-cmd @ #x~X>~%" (-> obj atest-def))
obj
)
;; definition for symbol tie-vu1-block, type vu-function
(define tie-vu1-block (new 'static 'vu-function :length #x3e1 :qlength #x1f1))
;; definition for function tie-init-consts
;; INFO: Return type mismatch int vs none.
(defun tie-init-consts ((arg0 tie-consts) (arg1 int))
(set! (-> arg0 adgif tag) (new 'static 'gif-tag64 :nloop #x5 :nreg #x1))
(set! (-> arg0 adgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))
(cond
((zero? *subdivide-draw-mode*)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)
)
)
)
((= *subdivide-draw-mode* 3)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe arg1)
)
)
)
((= *subdivide-draw-mode* 1)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :fge #x1 :abe arg1)
)
)
)
((= *subdivide-draw-mode* 2)
(set! (-> arg0 strgif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :fge #x1 :abe arg1)
)
)
)
)
(set! (-> arg0 strgif regs)
(new 'static 'gif-tag-regs :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
)
(let ((f1-0 8388894.0)
(f2-0 8389078.0)
(f0-0 8389262.0)
)
(set! (-> arg0 gifbufs x) f0-0)
(set! (-> arg0 gifbufs y) f2-0)
(set! (-> arg0 gifbufs z) f0-0)
(set! (-> arg0 gifbufs w) f2-0)
(set! (-> arg0 extra x) (+ f1-0 f2-0 f0-0))
(set! (-> arg0 extra y) 0.0)
(set! (-> arg0 extra z) (+ f1-0 f2-0 f0-0))
)
(set! (-> arg0 clrbufs vector4w x) 198)
(set! (-> arg0 clrbufs vector4w y) 242)
(set! (-> arg0 clrbufs vector4w z) 198)
(set! (-> arg0 clrbufs vector4w w) 242)
(set! (-> arg0 atestgif tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> arg0 atestgif regs) (new 'static 'gif-tag-regs :regs0 (gif-reg-id a+d)))
(set! (-> arg0 atest-tra cmd) (gs-reg test-1))
(set! (-> arg0 atest-tra data) (the-as uint #x5026b))
(set! (-> arg0 atest-def cmd) (gs-reg test-1))
(set! (-> arg0 atest-def data) (the-as uint #x5000e))
(set! (-> arg0 misc vector4w x) 0)
(set! (-> arg0 misc vector4w y) -1)
(none)
)
;; definition for function tie-init-engine
;; INFO: Return type mismatch int vs none.
(defun tie-init-engine ((arg0 dma-buffer) (arg1 gs-test) (arg2 int))
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie))
(dma-buffer-add-vu-function arg0 tie-vu1-block 1)
(let* ((v1-3 arg0)
(a0-2 (the-as object (-> v1-3 base)))
)
(set! (-> (the-as dma-packet a0-2) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-2) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-2) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-3 base) (&+ (the-as pointer a0-2) 16))
)
(let* ((v1-4 arg0)
(a0-4 (the-as object (-> v1-4 base)))
)
(set! (-> (the-as gs-gif-tag a0-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> (the-as gs-gif-tag a0-4) regs)
(new 'static 'gif-tag-regs
:regs0 (gif-reg-id a+d)
:regs1 (gif-reg-id a+d)
:regs2 (gif-reg-id a+d)
:regs3 (gif-reg-id a+d)
:regs4 (gif-reg-id a+d)
:regs5 (gif-reg-id a+d)
:regs6 (gif-reg-id a+d)
:regs7 (gif-reg-id a+d)
:regs8 (gif-reg-id a+d)
:regs9 (gif-reg-id a+d)
:regs10 (gif-reg-id a+d)
:regs11 (gif-reg-id a+d)
:regs12 (gif-reg-id a+d)
:regs13 (gif-reg-id a+d)
:regs14 (gif-reg-id a+d)
:regs15 (gif-reg-id a+d)
)
)
(set! (-> v1-4 base) (the-as pointer (&+ (the-as gs-gif-tag a0-4) 16)))
)
(let* ((v1-5 arg0)
(a0-6 (-> v1-5 base))
)
(set! (-> (the-as (pointer gs-test) a0-6) 0) arg1)
(set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 test-1))
(set! (-> v1-5 base) (&+ a0-6 16))
)
(let ((s4-1 9))
(let* ((v1-6 arg0)
(a0-8 (the-as object (-> v1-6 base)))
)
(set! (-> (the-as dma-packet a0-8) dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc s4-1))
(set! (-> (the-as dma-packet a0-8) vif0) (new 'static 'vif-tag :cmd (vif-cmd stmod)))
(set! (-> (the-as dma-packet a0-8) vif1)
(new 'static 'vif-tag :imm #x3c6 :cmd (vif-cmd unpack-v4-32) :num s4-1)
)
(set! (-> v1-6 base) (&+ (the-as pointer a0-8) 16))
)
(tie-init-consts (the-as tie-consts (-> arg0 base)) arg2)
(&+! (-> arg0 base) (* s4-1 16))
)
(let* ((v1-9 arg0)
(a0-12 (the-as object (-> v1-9 base)))
)
(set! (-> (the-as dma-packet a0-12) dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-12) vif0) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd mscalf) :msk #x1))
(set! (-> (the-as dma-packet a0-12) vif1) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> v1-9 base) (&+ (the-as pointer a0-12) 16))
)
(let* ((v1-10 arg0)
(a0-14 (the-as object (-> v1-10 base)))
)
(set! (-> (the-as dma-packet a0-14) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-14) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-14) vif1) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1))
(set! (-> v1-10 base) (&+ (the-as pointer a0-14) 16))
)
(let ((v1-11 (the-as object (-> arg0 base))))
(set! (-> (the-as (inline-array vector4w) v1-11) 0 x) #x4b000000)
(set! (-> (the-as (inline-array vector4w) v1-11) 0 y) #x4b000000)
(set! (-> (the-as (inline-array vector4w) v1-11) 0 z) #x4b000000)
(set! (-> (the-as (inline-array vector4w) v1-11) 0 w) #x4b000000)
(set! (-> (the-as (pointer vif-tag) v1-11) 4) (new 'static 'vif-tag :cmd (vif-cmd base)))
(set! (-> (the-as (pointer vif-tag) v1-11) 5) (new 'static 'vif-tag :imm #x2c :cmd (vif-cmd offset)))
(set! (-> (the-as (pointer vif-tag) v1-11) 6) (new 'static 'vif-tag :cmd (vif-cmd stmod)))
(set! (-> (the-as (pointer vif-tag) v1-11) 7) (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl)))
(set! (-> arg0 base) (&+ (the-as pointer v1-11) 32))
)
0
)
0
(none)
)
;; definition for function tie-end-buffer
;; INFO: Return type mismatch int vs none.
(defun tie-end-buffer ((arg0 dma-buffer))
(when (logtest? *vu1-enable-user* (vu1-renderer-mask tie))
(let* ((v1-3 arg0)
(a1-0 (the-as object (-> v1-3 base)))
)
(set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a1-0) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-3 base) (&+ (the-as pointer a1-0) 16))
)
(let* ((v1-4 arg0)
(a1-2 (the-as object (-> v1-4 base)))
)
(set! (-> (the-as gs-gif-tag a1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> (the-as gs-gif-tag a1-2) regs)
(new 'static 'gif-tag-regs
:regs0 (gif-reg-id a+d)
:regs1 (gif-reg-id a+d)
:regs2 (gif-reg-id a+d)
:regs3 (gif-reg-id a+d)
:regs4 (gif-reg-id a+d)
:regs5 (gif-reg-id a+d)
:regs6 (gif-reg-id a+d)
:regs7 (gif-reg-id a+d)
:regs8 (gif-reg-id a+d)
:regs9 (gif-reg-id a+d)
:regs10 (gif-reg-id a+d)
:regs11 (gif-reg-id a+d)
:regs12 (gif-reg-id a+d)
:regs13 (gif-reg-id a+d)
:regs14 (gif-reg-id a+d)
:regs15 (gif-reg-id a+d)
)
)
(set! (-> v1-4 base) (&+ (the-as pointer a1-2) 16))
)
(let* ((v1-5 arg0)
(a1-4 (-> v1-5 base))
)
(set! (-> (the-as (pointer gs-test) a1-4) 0)
(new 'static 'gs-test :atst (gs-atest not-equal) :zte #x1 :ztst (gs-ztest greater-equal))
)
(set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 test-1))
(set! (-> v1-5 base) (&+ a1-4 16))
)
(let* ((v1-6 arg0)
(a1-6 (the-as object (-> v1-6 base)))
)
(set! (-> (the-as dma-packet a1-6) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a1-6) vif0) (new 'static 'vif-tag :cmd (vif-cmd stmask)))
(set! (-> (the-as dma-packet a1-6) vif1) (new 'static 'vif-tag))
(set! (-> v1-6 base) (&+ (the-as pointer a1-6) 16))
)
(let* ((v1-7 arg0)
(a0-1 (-> v1-7 base))
)
(set! (-> (the-as (pointer vif-tag) a0-1) 0) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd mscalf) :msk #x1))
(set! (-> (the-as (pointer vif-tag) a0-1) 1) (new 'static 'vif-tag :cmd (vif-cmd stmod)))
(set! (-> (the-as (pointer vif-tag) a0-1) 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> (the-as (pointer vif-tag) a0-1) 3) (new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1))
(set! (-> (the-as (pointer vif-tag) a0-1) 4) (new 'static 'vif-tag))
(set! (-> (the-as (pointer vif-tag) a0-1) 5) (new 'static 'vif-tag))
(set! (-> (the-as (pointer vif-tag) a0-1) 6) (new 'static 'vif-tag))
(set! (-> (the-as (pointer vif-tag) a0-1) 7) (new 'static 'vif-tag))
(set! (-> v1-7 base) (&+ a0-1 32))
)
0
)
0
(none)
)
;; definition (debug) for function tie-int-reg
(defun-debug tie-int-reg ((arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
"zero"
)
((= v1-0 1)
"itemp"
)
((= v1-0 2)
"point-ptr"
)
((= v1-0 3)
"clr-ptr"
)
((= v1-0 4)
"target-bp1-ptr"
)
((= v1-0 5)
"skip-bp2"
)
((= v1-0 6)
"target-bp2-ptr"
)
((= v1-0 7)
"target-ip1-ptr"
)
((= v1-0 8)
"target-ip2-ptr"
)
((= v1-0 9)
"ind/ind0"
)
((= v1-0 10)
" ind1"
)
((= v1-0 11)
" ind2"
)
((= v1-0 12)
"dest-ptr"
)
((= v1-0 13)
"dest2-ptr"
)
((= v1-0 14)
"skip-ips"
)
((= v1-0 15)
"kick-addr"
)
)
)
)
;; definition (debug) for function tie-float-reg
(defun-debug tie-float-reg ((arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
"zero"
)
((= v1-0 1)
"t-mtx0"
)
((= v1-0 2)
"t-mtx1"
)
((= v1-0 3)
"t-mtx2"
)
((= v1-0 4)
"t-mtx3"
)
((= v1-0 5)
"vtx-0"
)
((= v1-0 6)
"vtx-1"
)
((= v1-0 7)
"vtx-2"
)
((= v1-0 8)
"vtx-3"
)
((= v1-0 9)
"pos-0/2"
)
((= v1-0 10)
"pos-1/3"
)
((= v1-0 11)
"clr-0"
)
((= v1-0 12)
"clr-1"
)
((= v1-0 13)
"clr-2"
)
((= v1-0 14)
"clr-3"
)
((= v1-0 15)
"tex-0"
)
((= v1-0 16)
"tex-1"
)
((= v1-0 17)
"tex-2"
)
((= v1-0 18)
"tex-3"
)
((= v1-0 19)
"res-0/2"
)
((= v1-0 20)
"res-1/3"
)
((= v1-0 21)
"gifbuf"
)
((= v1-0 22)
"clrbuf"
)
((= v1-0 23)
"extra"
)
((= v1-0 24)
"inds"
)
((= v1-0 25)
"--"
)
((= v1-0 26)
"--"
)
((= v1-0 27)
"morph"
)
((= v1-0 28)
"xyzofs"
)
((= v1-0 29)
"clr1"
)
((= v1-0 30)
"clr2"
)
((= v1-0 31)
"--"
)
)
)
)
;; definition (debug) for function tie-ints
;; INFO: Return type mismatch symbol vs none.
;; Used lq/sq
(defun-debug tie-ints ()
(local-vars (sv-16 uint))
(let ((gp-0 (the-as (pointer uint32) (+ #x3fa0 #x1100c000))))
(dotimes (s5-0 16)
(if (< s5-0 10)
(format 0 " ")
)
(let ((s4-0 format)
(s3-0 0)
(s2-0 "vi~d: ~6d #x~4,'0X ~s~%")
(s1-0 s5-0)
(s0-0 (-> gp-0 (* s5-0 4)))
)
(set! sv-16 (-> gp-0 (* s5-0 4)))
(let ((t1-0 (tie-int-reg s5-0)))
(s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 t1-0)
)
)
)
)
(none)
)
;; definition (debug) for function tie-floats
;; INFO: Return type mismatch symbol vs none.
;; Used lq/sq
(defun-debug tie-floats ()
(local-vars (sv-16 uint) (sv-32 uint))
(let ((gp-0 (the-as (pointer uint32) (+ #x3da0 #x1100c000))))
(dotimes (s5-0 32)
(if (< s5-0 10)
(format 0 " ")
)
(format
0
"vf~d: #x~8,'0X #x~8,'0X #x~8,'0X #x~8,'0X "
s5-0
(-> gp-0 (* s5-0 4))
(-> gp-0 (+ (* s5-0 4) 1))
(-> gp-0 (+ (* s5-0 4) 2))
(-> gp-0 (+ (* s5-0 4) 3))
)
(let ((s4-0 format)
(s3-0 0)
(s2-0 "~F ~F ~F ~F ~s~%")
(s1-0 (-> gp-0 (* s5-0 4)))
(s0-0 (-> gp-0 (+ (* s5-0 4) 1)))
)
(set! sv-16 (-> gp-0 (+ (* s5-0 4) 2)))
(set! sv-32 (-> gp-0 (+ (* s5-0 4) 3)))
(let ((t2-1 (tie-float-reg s5-0)))
(s4-0 s3-0 s2-0 s1-0 s0-0 sv-16 sv-32 t2-1)
)
)
)
)
(none)
)
+1 -1
View File
@@ -577,7 +577,7 @@
(set! sv-16 (-> s1-2 array-data (the-as uint current-login-pos)))
(set! sv-32 0)
(while (< sv-32 4)
(let ((a0-28 (-> sv-16 geometry sv-32)))
(let ((a0-28 (-> sv-16 geometry-override sv-32)))
(if (nonzero? a0-28)
(login a0-28)
)