add ref tests for tfrag (#989)

This commit is contained in:
water111
2021-12-04 13:14:40 -05:00
committed by GitHub
parent 083202929c
commit 28b6584cd4
13 changed files with 2583 additions and 4 deletions
+2 -2
View File
@@ -16685,8 +16685,8 @@
;; - Functions
(define-extern tfrag-details function)
(define-extern clip-restore function)
(define-extern tfrag-details (function tfragment none))
(define-extern clip-restore (function none))
;; - Unknowns
@@ -15,7 +15,7 @@
"disassemble_code": false,
// Run the decompiler
"decompile_code": false,
"decompile_code": true,
////////////////////////////
// DATA ANALYSIS OPTIONS
@@ -1861,6 +1861,10 @@
["L2", "(array array)"]
],
"tfrag-near": [
["L1", "vu-function"]
],
// please do not add things after this entry! git is dumb.
"object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": []
}
@@ -5036,5 +5036,10 @@
[64, "vector"]
],
"clip-restore": [
[16, "vector"],
[32, "matrix"]
],
"placeholder-do-not-add-below!": []
}
@@ -4986,6 +4986,7 @@
"tfrag-near-init-buffer": [
[[11, 15], "a0", "dma-packet"],
[[21, 24], "a0", "gs-gif-tag"],
[28, "a0", "(pointer gs-test)"],
[30, "a0", "(pointer gs-reg64)"],
[[45, 50], "v1", "dma-packet"]
],
@@ -5000,6 +5001,7 @@
"tfrag-init-buffer": [
[[11, 15], "a0", "dma-packet"],
[[21, 24], "a0", "gs-gif-tag"],
[28, "a0", "(pointer gs-test)"],
[30, "a0", "(pointer gs-reg64)"],
[[45, 50], "v1", "dma-packet"]
],
@@ -6371,5 +6373,9 @@
[40, "t9", "(function none :behavior target)"]
],
"tfrag-details":[
[49, "gp", "(pointer uint32)"]
],
"placeholder-do-not-add-below": []
}
+1
View File
@@ -27,6 +27,7 @@ JUN.DGO out/iso/JUN.DGO
MAI.DGO out/iso/MAI.DGO
BEA.DGO out/iso/BEA.DGO
CIT.DGO out/iso/CIT.DGO
SUN.DGO out/iso/SUN.DGO
FUCVICTO.STR out/iso/FUCVICTO.STR
FUCV2.STR out/iso/FUCV2.STR
FUCV3.STR out/iso/FUCV3.STR
+63
View File
@@ -0,0 +1,63 @@
("SUN.DGO"
("sunken-part.o" "sunken-part")
("sunken-part2.o" "sunken-part2")
("sunken-part3.o" "sunken-part3")
("sunken-part4.o" "sunken-part4")
("sunken-part5.o" "sunken-part5")
("target-tube.o" "target-tube")
("eichar-tube+0-ag-SUN.go" "eichar-tube+0")
("sunken-obs.o" "sunken-obs")
("shover.o" "shover")
("launcherdoor.o" "launcherdoor")
("square-platform.o" "square-platform")
("sun-iris-door.o" "sun-iris-door")
("orbit-plat.o" "orbit-plat")
("wedge-plats.o" "wedge-plats")
("wall-plat.o" "wall-plat")
("qbert-plat.o" "qbert-plat")
("steam-cap.o" "steam-cap")
("sun-exit-chamber.o" "sun-exit-chamber")
("floating-launcher.o" "floating-launcher")
("sunken-water.o" "sunken-water")
("whirlpool.o" "whirlpool")
("sunken-pipegame.o" "sunken-pipegame")
("bully.o" "bully")
("double-lurker.o" "double-lurker")
("helix-water.o" "helix-water")
("puffer.o" "puffer")
("sunken-fish.o" "sunken-fish")
("tpage-661.go" "tpage-661")
("tpage-663.go" "tpage-663")
("tpage-714.go" "tpage-714")
("tpage-662.go" "tpage-662")
("tpage-766.go" "tpage-766")
("babak-ag.go" "babak")
("bully-ag.go" "bully")
("double-lurker-ag.go" "double-lurker")
("double-lurker-top-ag.go" "double-lurker-top")
("exit-chamber-ag.go" "exit-chamber")
("generic-button-ag.go" "generic-button")
("launcherdoor-ag-SUN.go" "launcherdoor")
("orb-cache-top-ag-SUN.go" "orb-cache-top")
("orbit-plat-ag.go" "orbit-plat")
("orbit-plat-bottom-ag.go" "orbit-plat-bottom")
("plat-sunken-ag.go" "plat-sunken")
("puffer-ag.go" "puffer")
("qbert-plat-ag.go" "qbert-plat")
("qbert-plat-on-ag.go" "qbert-plat-on")
("seaweed-ag.go" "seaweed")
("shover-ag-SUN.go" "shover")
("side-to-side-plat-ag.go" "side-to-side-plat")
("square-platform-ag.go" "square-platform")
("steam-cap-ag-SUN.go" "steam-cap")
("sun-iris-door-ag.go" "sun-iris-door")
("sunkencam-ag-SUN.go" "sunkencam")
("sunkenfisha-ag.go" "sunkenfisha")
("wall-plat-ag.go" "wall-plat")
("water-anim-sunken-ag.go" "water-anim-sunken")
("water-anim-sunken-dark-eco-ag.go" "water-anim-sunken-dark-eco")
("wedge-plat-ag.go" "wedge-plat")
("wedge-plat-outer-ag.go" "wedge-plat-outer")
("whirlpool-ag.go" "whirlpool")
("sunken-vis.go" "sunken-vis")
)
+20
View File
@@ -29,4 +29,24 @@
(none)
)
(defun debug-set-camera-pos-rot! ((arg0 vector) (arg1 matrix))
(when (and *camera* *camera-combiner*)
(send-event *camera* 'change-state cam-free-floating 0)
(set! (-> *camera-combiner* trans quad) (-> arg0 quad))
(let ((a2-0 (-> *camera-combiner* inv-camera-rot))
(v1-10 (-> arg1 vector 0 quad))
(a0-4 (-> arg1 vector 1 quad))
(a1-2 (-> arg1 vector 2 quad))
(a3-0 (-> arg1 vector 3 quad))
)
(set! (-> a2-0 vector 0 quad) v1-10)
(set! (-> a2-0 vector 1 quad) a0-4)
(set! (-> a2-0 vector 2 quad) a1-2)
(set! (-> a2-0 vector 3 quad) a3-0)
)
(send-event *camera* 'change-state cam-fixed 0)
)
arg0
)
)
+86 -1
View File
@@ -5,4 +5,89 @@
;; name in dgo: tfrag-near
;; dgos: GAME, ENGINE
(define tnear-vu1-block (new 'static 'vu-function :length #x0 :qlength #x0))
(define tnear-vu1-block (new 'static 'vu-function :length #x0 :qlength #x0))
(defun-debug tfrag-details ((arg0 tfragment))
"Print some stats about tfrag. It accessest past the end of the dma chain array,
so I think this is from a slightly older tfrag format"
(format 0 "id = ~d~%" (-> arg0 id))
(format 0 "common:~%")
(let ((s5-0 (-> arg0 dma-qwc 0))
(s4-0 (-> arg0 dma-common))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-0 s4-0)
(disasm-vif-tag
(the-as (pointer vif-tag) s4-0)
(the-as int (* s5-0 4))
(the-as symbol 0)
#t
)
)
(format 0 "base:~%")
(let ((s5-1 (-> arg0 dma-qwc 1))
(s4-1 (-> arg0 dma-base))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-1 s4-1)
(disasm-vif-tag
(the-as (pointer vif-tag) s4-1)
(the-as int (* s5-1 4))
(the-as symbol 0)
#t
)
)
(format 0 "level-0:~%")
(let ((s5-2 (-> arg0 dma-qwc 3))
(s4-2 (-> (the-as (pointer uint32) arg0) 10))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-2 s4-2)
(disasm-vif-tag
(the-as (pointer vif-tag) s4-2)
(the-as int (* s5-2 4))
(the-as symbol 0)
#t
)
)
(format 0 "level-1:~%")
(let ((s5-3 (-> arg0 dma-qwc 2))
(gp-1 (-> arg0 dma-level-1))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-3 gp-1)
(disasm-vif-tag
(the-as (pointer vif-tag) gp-1)
(the-as int (* s5-3 4))
(the-as symbol 0)
#t
)
)
(none)
)
(defun-debug clip-restore ()
"Move the camera to a place in sandover"
(let ((a0-0 (new-stack-vector0))
(a1-0 (new-stack-matrix0))
)
(set! (-> a0-0 x) 92648.22)
(set! (-> a0-0 y) 238025.03)
(set! (-> a0-0 z) 199836.31)
(set! (-> a0-0 w) 1.0)
(set! (-> a1-0 vector 0 x) -0.9283)
(set! (-> a1-0 vector 0 y) 0.0)
(set! (-> a1-0 vector 0 z) 0.3716)
(set! (-> a1-0 vector 0 w) 0.0)
(set! (-> a1-0 vector 1 x) -0.2257)
(set! (-> a1-0 vector 1 y) 0.7945)
(set! (-> a1-0 vector 1 z) -0.5637)
(set! (-> a1-0 vector 1 w) 0.0)
(set! (-> a1-0 vector 2 x) -0.2952)
(set! (-> a1-0 vector 2 y) -0.6072)
(set! (-> a1-0 vector 2 z) -0.7375)
(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)
)
(none)
)
+72
View File
@@ -219,6 +219,7 @@
"out/iso/MAI.DGO"
"out/iso/BEA.DGO"
"out/iso/CIT.DGO"
"out/iso/SUN.DGO"
)
@@ -600,6 +601,77 @@
"water-anim-village2-ag"
"village2-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; LPC
;;;;;;;;;;;;;;;;;;;;;
(cgo "SUN.DGO" "sun.gd")
(goal-src-sequence
"levels/sunken/"
:deps ("out/obj/default-menu.o")
"sunken-part.gc"
"sunken-part2.gc"
"sunken-part3.gc"
"sunken-part4.gc"
"sunken-part5.gc"
"target-tube.gc"
"sunken-obs.gc"
"shover.gc"
"square-platform.gc"
"sun-iris-door.gc"
"orbit-plat.gc"
"wedge-plats.gc"
"wall-plat.gc"
"qbert-plat.gc"
"steam-cap.gc"
"sun-exit-chamber.gc"
"floating-launcher.gc"
"sunken-water.gc"
"whirlpool.gc"
"sunken-pipegame.gc"
"bully.gc"
"double-lurker.gc"
"helix-water.gc"
"puffer.gc"
"sunken-fish.gc"
)
(copy-textures 661 663 714 662 766)
(copy-gos
"eichar-tube+0-ag-SUN"
"bully-ag"
"double-lurker-ag"
"double-lurker-top-ag"
"exit-chamber-ag"
"generic-button-ag"
"launcherdoor-ag-SUN"
"orb-cache-top-ag-SUN"
"orbit-plat-ag"
"orbit-plat-bottom-ag"
"plat-sunken-ag"
"puffer-ag"
"qbert-plat-ag"
"qbert-plat-on-ag"
"seaweed-ag"
"shover-ag-SUN"
"side-to-side-plat-ag"
"square-platform-ag"
"steam-cap-ag-SUN"
"sun-iris-door-ag"
"sunkencam-ag-SUN"
"sunkenfisha-ag"
"wall-plat-ag"
"water-anim-sunken-ag"
"water-anim-sunken-dark-eco-ag"
"wedge-plat-ag"
"wedge-plat-outer-ag"
"whirlpool-ag"
"sunken-vis"
)
;;;;;;;;;;;;;;;;;;;;;
;; Village 3
File diff suppressed because it is too large Load Diff
+96
View File
@@ -0,0 +1,96 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol tnear-vu1-block, type vu-function
(define tnear-vu1-block (new 'static 'vu-function :length #x388 :qlength #x1c4))
;; definition (debug) for function tfrag-details
;; INFO: Return type mismatch symbol vs none.
(defun-debug tfrag-details ((arg0 tfragment))
(format 0 "id = ~d~%" (-> arg0 id))
(format 0 "common:~%")
(let ((s5-0 (-> arg0 dma-qwc 0))
(s4-0 (-> arg0 dma-common))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-0 s4-0)
(disasm-vif-tag
(the-as (pointer vif-tag) s4-0)
(the-as int (* s5-0 4))
(the-as symbol 0)
#t
)
)
(format 0 "base:~%")
(let ((s5-1 (-> arg0 dma-qwc 1))
(s4-1 (-> arg0 dma-base))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-1 s4-1)
(disasm-vif-tag
(the-as (pointer vif-tag) s4-1)
(the-as int (* s5-1 4))
(the-as symbol 0)
#t
)
)
(format 0 "level-0:~%")
(let ((s5-2 (-> arg0 dma-qwc 3))
(s4-2 (-> (the-as (pointer uint32) arg0) 10))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-2 s4-2)
(disasm-vif-tag
(the-as (pointer vif-tag) s4-2)
(the-as int (* s5-2 4))
(the-as symbol 0)
#t
)
)
(format 0 "level-1:~%")
(let ((s5-3 (-> arg0 dma-qwc 2))
(gp-1 (-> arg0 dma-level-1))
)
(format 0 "qwc = ~d, ref = ~x~%" s5-3 gp-1)
(disasm-vif-tag
(the-as (pointer vif-tag) gp-1)
(the-as int (* s5-3 4))
(the-as symbol 0)
#t
)
)
(none)
)
;; definition (debug) for function clip-restore
;; INFO: Return type mismatch vector vs none.
;; Used lq/sq
(defun-debug clip-restore ()
(let ((a0-0 (new-stack-vector0))
(a1-0 (new-stack-matrix0))
)
(set! (-> a0-0 x) 92648.22)
(set! (-> a0-0 y) 238025.03)
(set! (-> a0-0 z) 199836.31)
(set! (-> a0-0 w) 1.0)
(set! (-> a1-0 vector 0 x) -0.9283)
(set! (-> a1-0 vector 0 y) 0.0)
(set! (-> a1-0 vector 0 z) 0.3716)
(set! (-> a1-0 vector 0 w) 0.0)
(set! (-> a1-0 vector 1 x) -0.2257)
(set! (-> a1-0 vector 1 y) 0.7945)
(set! (-> a1-0 vector 1 z) -0.5637)
(set! (-> a1-0 vector 1 w) 0.0)
(set! (-> a1-0 vector 2 x) -0.2952)
(set! (-> a1-0 vector 2 y) -0.6072)
(set! (-> a1-0 vector 2 z) -0.7375)
(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)
)
(none)
)
+753
View File
@@ -0,0 +1,753 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for method 9 of type tfragment
(defmethod login tfragment ((obj tfragment))
(dotimes (s5-0 (the-as int (-> obj num-shaders)))
(adgif-shader-login-no-remap (-> obj shader s5-0))
)
obj
)
;; definition for method 8 of type tfragment
(defmethod
mem-usage
tfragment
((obj tfragment) (arg0 memory-usage-block) (arg1 int))
(when (logtest? arg1 2)
(+! (-> arg0 data 19 count) 1)
(let
((v1-6
(+
(-> obj num-base-colors)
(-> obj num-level0-colors)
(-> obj num-level1-colors)
)
)
)
(+! (-> arg0 data 19 used) v1-6)
(+! (-> arg0 data 19 total) (logand -4 (+ v1-6 3)))
)
(set! obj obj)
(goto cfg-16)
)
(let ((s4-0 1))
(set! (-> arg0 length) (max (-> arg0 length) (+ s4-0 8)))
(set! (-> arg0 data s4-0 name) (symbol->string 'tfragment))
(+! (-> arg0 data s4-0 count) 1)
(let ((v1-22 (asize-of obj)))
(+! (-> arg0 data s4-0 used) v1-22)
(+! (-> arg0 data s4-0 total) (logand -16 (+ v1-22 15)))
)
(set! (-> arg0 data (+ s4-0 1) name) "tfragment-base")
(+! (-> arg0 data (+ s4-0 1) count) 1)
(let ((v1-33 (* (-> obj dma-qwc 0) 16)))
(+! (-> arg0 data (+ s4-0 1) used) v1-33)
(+! (-> arg0 data (+ s4-0 1) total) v1-33)
)
(set! (-> arg0 data (+ s4-0 2) name) "tfragment-common")
(+! (-> arg0 data (+ s4-0 2) count) 1)
(let ((v1-43 (* (- (-> obj dma-qwc 1) (-> obj dma-qwc 0)) 16)))
(+! (-> arg0 data (+ s4-0 2) used) v1-43)
(+! (-> arg0 data (+ s4-0 2) total) v1-43)
)
(set! (-> arg0 data (+ s4-0 3) name) "tfragment-level0")
(when (nonzero? (-> obj num-level0-colors))
(+! (-> arg0 data (+ s4-0 3) count) 1)
(let ((v1-55 (* (- (-> obj dma-qwc 2) (-> obj dma-qwc 0)) 16)))
(+! (-> arg0 data (+ s4-0 3) used) v1-55)
(+! (-> arg0 data (+ s4-0 3) total) v1-55)
)
)
(set! (-> arg0 data (+ s4-0 4) name) "tfragment-level1")
(when
(not
(or
(= (-> obj dma-level-1) (-> obj dma-common))
(= (-> obj dma-level-1) (-> obj dma-base))
(zero? (-> obj num-level1-colors))
)
)
(+! (-> arg0 data (+ s4-0 4) count) 1)
(let
((v1-70
(*
(-
(-> obj dma-qwc 3)
(the-as
uint
(-
(/ (the-as int (- (-> obj dma-level-1) (-> obj dma-common))) 16)
(the-as int (-> obj dma-qwc 0))
)
)
)
16
)
)
)
(+! (-> arg0 data (+ s4-0 4) used) v1-70)
(+! (-> arg0 data (+ s4-0 4) total) v1-70)
)
)
(set! (-> arg0 data (+ s4-0 5) name) "tfragment-color")
(+! (-> arg0 data (+ s4-0 5) count) 1)
(let ((v1-79 (if (logtest? arg1 1)
0
(the-as
int
(*
(+
(-> obj num-base-colors)
(-> obj num-level0-colors)
(-> obj num-level1-colors)
)
2
)
)
)
)
)
(+! (-> arg0 data (+ s4-0 5) used) v1-79)
(+! (-> arg0 data (+ s4-0 5) total) (logand -16 (+ v1-79 15)))
)
(set! (-> arg0 data (+ s4-0 6) name) "tfragment-debug")
)
(label cfg-16)
obj
)
;; definition for method 3 of type drawable-inline-array-tfrag
(defmethod
inspect
drawable-inline-array-tfrag
((obj drawable-inline-array-tfrag))
(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 drawable-inline-array-tfrag
(defmethod login drawable-inline-array-tfrag ((obj drawable-inline-array-tfrag))
(dotimes (s5-0 (-> obj length))
(login (-> obj data s5-0))
)
obj
)
;; definition for method 8 of type drawable-inline-array-tfrag
(defmethod
mem-usage
drawable-inline-array-tfrag
((obj drawable-inline-array-tfrag) (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 drawable-tree-tfrag
(defmethod
mem-usage
drawable-tree-tfrag
((obj drawable-tree-tfrag) (arg0 memory-usage-block) (arg1 int))
(set! (-> arg0 length) (max 1 (-> arg0 length)))
(set! (-> arg0 data 0 name) "drawable-group")
(+! (-> arg0 data 0 count) 1)
(let ((v1-6 (asize-of obj)))
(+! (-> arg0 data 0 used) v1-6)
(+! (-> arg0 data 0 total) (logand -16 (+ v1-6 15)))
)
(when (nonzero? (-> obj time-of-day-pal))
(set! (-> arg0 length) (max 9 (-> arg0 length)))
(set! (-> arg0 data 8 name) "tfragment-pal")
(+! (-> arg0 data 8 count) 1)
(let ((v1-18 (asize-of (-> obj time-of-day-pal))))
(+! (-> arg0 data 8 used) v1-18)
(+! (-> arg0 data 8 total) (logand -16 (+ v1-18 15)))
)
)
(dotimes (s3-0 (-> obj length))
(mem-usage (-> obj arrays s3-0) arg0 arg1)
)
obj
)
;; definition for method 5 of type drawable-inline-array-tfrag
;; INFO: Return type mismatch uint vs int.
(defmethod
asize-of
drawable-inline-array-tfrag
((obj drawable-inline-array-tfrag))
(the-as
int
(+ (-> drawable-inline-array-tfrag size) (* (+ (-> obj length) -1) 64))
)
)
;; definition for symbol *tfrag-display-stats*, type symbol
(define *tfrag-display-stats* #f)
;; definition for symbol tfrag-vu1-block, type vu-function
(define tfrag-vu1-block (new 'static 'vu-function :length #x74b :qlength #x3a6))
;; definition for function tfrag-data-setup
;; INFO: Return type mismatch tfrag-data vs none.
;; Used lq/sq
(defun tfrag-data-setup ((arg0 tfrag-data) (arg1 int))
(let ((v1-0 *math-camera*))
(set-vector!
(-> arg0 fog)
(-> v1-0 pfog0)
(-> v1-0 fog-min)
(-> v1-0 fog-max)
3072.0
)
(set-vector! (-> arg0 val) 0.5 1.0 2048.0 0.0)
(set-vector! (-> arg0 ambient) 1.0 1.0 1.0 1.0)
(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)
)
)
(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)
)
)
)
((= *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 :tme #x1 :fge #x1 :abe arg1)
)
)
(set!
(-> arg0 fangif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type line-strip) :iip #x1 :tme #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 fangif tag)
(new 'static 'gif-tag64
:pre #x1
:nreg #x3
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :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 regs)
(new 'static 'gif-tag-regs
:regs0 (gif-reg-id st)
:regs1 (gif-reg-id rgbaq)
:regs2 (gif-reg-id xyzf2)
)
)
(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 hvdf-offset quad) (-> v1-0 hvdf-off quad))
(set! (-> arg0 hmge-scale quad) (-> v1-0 hmge-scale quad))
(set! (-> arg0 invh-scale quad) (-> v1-0 inv-hmge-scale quad))
(set! (-> arg0 guard quad) (-> v1-0 guard quad))
)
(set-tfrag-dists! (-> arg0 dists))
(none)
)
;; definition for function add-tfrag-mtx-0
;; INFO: Return type mismatch pointer vs none.
(defun add-tfrag-mtx-0 ((arg0 dma-buffer))
(let* ((a1-0 4)
(v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set!
(-> (the-as dma-packet a0-1) dma)
(new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-0)
)
(set!
(-> (the-as dma-packet a0-1) vif0)
(new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))
)
(set!
(-> (the-as dma-packet a0-1) vif1)
(new 'static 'vif-tag :imm #x5 :cmd (vif-cmd unpack-v4-32) :num a1-0)
)
(set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))
)
(column-scale-matrix!
(the-as matrix (-> arg0 base))
(new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
(-> *math-camera* camera-temp)
)
(&+! (-> arg0 base) 64)
(none)
)
;; definition for function add-tfrag-mtx-1
;; INFO: Return type mismatch pointer vs none.
(defun add-tfrag-mtx-1 ((arg0 dma-buffer))
(let* ((a1-0 4)
(v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set!
(-> (the-as dma-packet a0-1) dma)
(new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a1-0)
)
(set!
(-> (the-as dma-packet a0-1) vif0)
(new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))
)
(set!
(-> (the-as dma-packet a0-1) vif1)
(new 'static 'vif-tag :imm #x14d :cmd (vif-cmd unpack-v4-32) :num a1-0)
)
(set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))
)
(column-scale-matrix!
(the-as matrix (-> arg0 base))
(new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
(-> *math-camera* camera-temp)
)
(&+! (-> arg0 base) 64)
(none)
)
;; definition for function add-tfrag-data
;; INFO: Return type mismatch pointer vs none.
(defun add-tfrag-data ((arg0 dma-buffer) (arg1 int))
(let* ((a2-0 14)
(v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set!
(-> (the-as dma-packet a0-1) dma)
(new 'static 'dma-tag :id (dma-tag-id cnt) :qwc a2-0)
)
(set!
(-> (the-as dma-packet a0-1) vif0)
(new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))
)
(set!
(-> (the-as dma-packet a0-1) vif1)
(new 'static 'vif-tag :imm #x290 :cmd (vif-cmd unpack-v4-32) :num a2-0)
)
(set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))
)
(tfrag-data-setup (the-as tfrag-data (-> arg0 base)) arg1)
(&+! (-> arg0 base) 224)
(let ((v1-3 (the-as object (-> arg0 base))))
(set!
(-> (the-as dma-packet v1-3) dma)
(new 'static 'dma-tag :id (dma-tag-id cnt))
)
(set! (-> (the-as dma-packet v1-3) vif0) (new 'static 'vif-tag))
(set!
(-> (the-as dma-packet v1-3) vif1)
(new 'static 'vif-tag :cmd (vif-cmd mscal) :msk #x1)
)
(set! (-> arg0 base) (&+ (the-as pointer v1-3) 16))
)
(none)
)
;; definition for symbol t-stat, type tfrag-stats
(define t-stat (new 'global 'tfrag-stats))
;; definition for function tfrag-print-stats
;; INFO: Return type mismatch symbol vs none.
(defun tfrag-print-stats ((arg0 symbol))
(when (and *tfrag-display-stats* (!= *master-mode* 'menu))
(format arg0 "~%")
(format arg0 "tris: ~8d~%" (-> t-stat tris))
(format
arg0
"verts: ~8d~%"
(+ (-> t-stat base-verts) (-> t-stat level0-verts) (-> t-stat level1-verts))
)
(format arg0 " base: ~8d~%" (-> t-stat base-verts))
(format arg0 " lev0: ~8d~%" (-> t-stat level0-verts))
(format arg0 " lev1: ~8d~%" (-> t-stat level1-verts))
(format arg0 "tfaces: ~8d~%" (-> t-stat tfaces))
(format arg0 "tfrags: ~8d~%" (-> t-stat tfrags))
(format arg0 "dtris: ~8d~%" (-> t-stat dtris))
(format arg0 "dps: ~8d~%" (-> t-stat drawpoints))
(format arg0 "strips: ~8d~%" (-> t-stat strips))
(format arg0 "shaders:~8d~%" (-> t-stat dma-tex))
(format
arg0
"tri/str:~8f~%"
(/ (the float (-> t-stat dtris)) (the float (-> t-stat strips)))
)
(format
arg0
"dma-cnt:~8d (~8d)~%"
(-> t-stat dma-cnt)
(* (-> t-stat dma-cnt) 32)
)
(format
arg0
"dma-dta:~8d (~8d)~%"
(-> t-stat dma-dta)
(/ (* 33 (-> t-stat dma-dta)) 10)
)
(let ((f0-4 (* 32.0 (the float (-> t-stat dma-cnt))))
(f1-5 (* 3.3 (the float (-> t-stat dma-dta))))
(f2-3 (* 30.0 (the float (-> t-stat tfrags))))
)
(+ f0-4 f1-5 f2-3)
)
)
(none)
)
;; failed to figure out what this is:
(set! (-> t-stat from) 0)
;; failed to figure out what this is:
(set! (-> t-stat to) 0)
;; failed to figure out what this is:
(set! (-> t-stat cnt) 0)
;; definition for function tfrag-init-buffer
;; INFO: Return type mismatch symbol vs none.
(defun tfrag-init-buffer ((arg0 dma-buffer) (arg1 gs-test) (arg2 int))
(dma-buffer-add-vu-function arg0 tfrag-vu1-block 1)
(let* ((v1-0 arg0)
(a0-2 (the-as object (-> v1-0 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-0 base) (&+ (the-as pointer a0-2) 16))
)
(let* ((v1-1 arg0)
(a0-4 (the-as object (-> v1-1 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-1 base) (&+ (the-as pointer a0-4) 16))
)
(let* ((v1-2 arg0)
(a0-6 (-> v1-2 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-2 base) (&+ a0-6 16))
)
(add-tfrag-mtx-0 arg0)
(add-tfrag-mtx-1 arg0)
(add-tfrag-data arg0 arg2)
(let ((v1-3 (the-as object (-> arg0 base))))
(set!
(-> (the-as dma-packet v1-3) dma)
(new 'static 'dma-tag :id (dma-tag-id cnt))
)
(set!
(-> (the-as dma-packet v1-3) vif0)
(new 'static 'vif-tag :cmd (vif-cmd base))
)
(set!
(-> (the-as dma-packet v1-3) vif1)
(new 'static 'vif-tag :imm #x148 :cmd (vif-cmd offset))
)
(set! (-> arg0 base) (&+ (the-as pointer v1-3) 16))
)
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(set! (-> t-stat cnt) 0)
(set! (-> t-stat tris) 0)
(set! (-> t-stat tfaces) 0)
(set! (-> t-stat tfrags) 0)
(set! (-> t-stat dtris) 0)
(set! (-> t-stat dma-cnt) 0)
(set! (-> t-stat dma-dta) 0)
(set! (-> t-stat dma-tex) 0)
(set! (-> t-stat strips) 0)
(set! (-> t-stat drawpoints) 0)
(set! (-> t-stat base-verts) 0)
(set! (-> t-stat level0-verts) 0)
(set! (-> t-stat level1-verts) 0)
(none)
)
;; definition for function tfrag-end-buffer
;; INFO: Return type mismatch symbol vs none.
(defun tfrag-end-buffer ((arg0 dma-buffer))
(let* ((v1-0 arg0)
(a1-0 (the-as object (-> v1-0 base)))
)
(set!
(-> (the-as dma-packet a1-0) dma)
(new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))
)
(set!
(-> (the-as dma-packet a1-0) vif0)
(new 'static 'vif-tag :cmd (vif-cmd stmask))
)
(set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag))
(set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))
)
(let* ((v1-1 arg0)
(a0-1 (-> v1-1 base))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 0)
(the-as vif-tag (-> *tfrag-work* last-call))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 1)
(new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 2)
(new 'static 'vif-tag :cmd (vif-cmd stmod))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 3)
(new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1)
)
(set! (-> (the-as (pointer uint32) a0-1) 4) (the-as uint 0))
(set! (-> (the-as (pointer uint32) a0-1) 5) (the-as uint 0))
(set! (-> (the-as (pointer uint32) a0-1) 6) (the-as uint 0))
(set! (-> (the-as (pointer uint32) a0-1) 7) (the-as uint 0))
(set!
(-> (the-as (pointer vif-tag) a0-1) 8)
(new 'static 'vif-tag :cmd (vif-cmd base))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 9)
(new 'static 'vif-tag :cmd (vif-cmd offset))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 10)
(new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))
)
(set! (-> (the-as (pointer vif-tag) a0-1) 11) (new 'static 'vif-tag))
(set! (-> v1-1 base) (&+ a0-1 48))
)
(none)
)
;; definition for function draw-inline-array-tfrag
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function tfrag-near-init-buffer
;; INFO: Return type mismatch symbol vs none.
(defun tfrag-near-init-buffer ((arg0 dma-buffer) (arg1 gs-test) (arg2 int))
(dma-buffer-add-vu-function arg0 tnear-vu1-block 1)
(let* ((v1-0 arg0)
(a0-2 (the-as object (-> v1-0 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-0 base) (&+ (the-as pointer a0-2) 16))
)
(let* ((v1-1 arg0)
(a0-4 (the-as object (-> v1-1 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-1 base) (&+ (the-as pointer a0-4) 16))
)
(let* ((v1-2 arg0)
(a0-6 (-> v1-2 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-2 base) (&+ a0-6 16))
)
(add-tfrag-mtx-0 arg0)
(add-tfrag-mtx-1 arg0)
(add-tfrag-data arg0 arg2)
(let ((v1-3 (the-as object (-> arg0 base))))
(set!
(-> (the-as dma-packet v1-3) dma)
(new 'static 'dma-tag :id (dma-tag-id cnt))
)
(set!
(-> (the-as dma-packet v1-3) vif0)
(new 'static 'vif-tag :cmd (vif-cmd base))
)
(set!
(-> (the-as dma-packet v1-3) vif1)
(new 'static 'vif-tag :imm #x148 :cmd (vif-cmd offset))
)
(set! (-> arg0 base) (&+ (the-as pointer v1-3) 16))
)
(set! (-> *tfrag-work* last-call) (the-as uint 0))
(none)
)
;; definition for function tfrag-near-end-buffer
;; INFO: Return type mismatch symbol vs none.
(defun tfrag-near-end-buffer ((arg0 dma-buffer))
(let* ((v1-0 arg0)
(a1-0 (the-as object (-> v1-0 base)))
)
(set!
(-> (the-as dma-packet a1-0) dma)
(new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt))
)
(set!
(-> (the-as dma-packet a1-0) vif0)
(new 'static 'vif-tag :cmd (vif-cmd stmask))
)
(set! (-> (the-as dma-packet a1-0) vif1) (new 'static 'vif-tag))
(set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))
)
(let* ((v1-1 arg0)
(a0-1 (-> v1-1 base))
)
(set! (-> (the-as (pointer uint32) a0-1)) (-> *tfrag-work* last-call))
(set!
(-> (the-as (pointer vif-tag) a0-1) 1)
(new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 2)
(new 'static 'vif-tag :cmd (vif-cmd stmod))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 3)
(new 'static 'vif-tag :cmd (vif-cmd strow) :msk #x1)
)
(set! (-> (the-as (pointer uint32) a0-1) 4) (the-as uint 0))
(set! (-> (the-as (pointer uint32) a0-1) 5) (the-as uint 0))
(set! (-> (the-as (pointer uint32) a0-1) 6) (the-as uint 0))
(set! (-> (the-as (pointer uint32) a0-1) 7) (the-as uint 0))
(set!
(-> (the-as (pointer vif-tag) a0-1) 8)
(new 'static 'vif-tag :cmd (vif-cmd base))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 9)
(new 'static 'vif-tag :cmd (vif-cmd offset))
)
(set!
(-> (the-as (pointer vif-tag) a0-1) 10)
(new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))
)
(set! (-> (the-as (pointer vif-tag) a0-1) 11) (new 'static 'vif-tag))
(set! (-> v1-1 base) (&+ a0-1 48))
)
(none)
)
;; definition for function draw-inline-array-tfrag-near
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function stats-tfrag-asm
;; ERROR: function was not converted to expressions. Cannot decompile.