start blit-displays decomp & renderer + improve decompilation of some DMA macros (#2616)

Adds sprite distort, fixes buggy sprite rendering in progress, adds
scissoring support (used in various scrolling menus) and a very basic
implementation of `blit-displays`. This is enough to make the fade
effect in the progress menu work, along with all the menus working
properly without needing to use the REPL. This does not make screen
flipping and the filter when failing a mission work.

Added support in the decompiler for detecting `dma-buffer-add-gs-set`
and `dma-buffer-add-gs-set-flusha` and updated all of the Jak 2 code to
use it. Readability improved!

Fixes decompiler issue with `with-dma-buffer-add-bucket` not inlining
forms which broke syntax. Fixes store error warnings showing up for
non-existent stores, there is now a dedicated pass for this at the end.

I started work on making `BITBLTBUF` stuff work in the DirectRenderer,
but stopped for now because it wasn't strictly necessary. It will still
assert like before.
This commit is contained in:
ManDude
2023-05-04 23:34:09 +01:00
committed by GitHub
parent ae3b76e465
commit 6884b0f73e
106 changed files with 3706 additions and 9246 deletions
+200
View File
@@ -1364,8 +1364,208 @@
)
)
(defmacro gs-reg-list (&rest reg-ids)
"Generate a giftag register descriptor list from reg-ids."
(let ((reg-count (length reg-ids)))
(when (> (length reg-ids) 16)
(ferror "too many regs passed to gs-reg-list")
)
(let ((list-to-splice '())
(cur-lst reg-ids)
(i -1))
;; this is questionable.
(while (and (not (null? cur-lst)) (< i 15))
(push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '())))
(push! list-to-splice (string->symbol-format ":regs{}" (inc! i)))
(pop! cur-lst)
)
`(new 'static 'gif-tag-regs
,@list-to-splice
)
)
#| ;; the opengoal compiler does not have enough constant propagation for this for now
(let ((i -1))
`(the-as gif-tag-regs (logior ,@(apply (lambda (x)
`(shl (the-as uint (gif-reg-id ,x)) ,(* 4 (inc! i)))
) reg-ids)
))
)|#
)
)
;; dma-buffer
(defmacro dma-buffer-add-base-type (buf pkt dma-type &rest body)
"Base macro for adding stuff to a dma-buffer. Don't use this directly!"
(with-gensyms (dma-buf)
`(let* ((,dma-buf ,buf)
(,pkt (the-as ,dma-type (-> ,dma-buf base))))
,@body
(set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type)))
)
)
)
(defmacro dma-buffer-add-base-data (buf data-type forms)
"Base macro for adding data words to a dma-buffer.
Each form in forms is converted into data-type and added to the buffer. NO TYPE CHECKING is performed, so be careful!"
(with-gensyms (dma-buf ptr)
`(let* ((,dma-buf ,buf)
(,ptr (the-as (pointer ,data-type) (-> ,dma-buf base))))
,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms)
(set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type))))
)
)
)
(defmacro dma-buffer-add-cnt-vif2 (buf qwc vif0 vif1)
"Add a dma-packet to a dma-buffer.
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data after the tag and continue from after that point)
and includes two vif-tags for vifcode, or something else if needed."
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc))
(set! (-> ,pkt vif0) ,vif0)
(set! (-> ,pkt vif1) ,vif1)
)
)
)
(defmacro dma-buffer-add-ref-vif2 (buf qwc addr vif0 vif1)
"Add a dma-packet to a dma-buffer.
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data at addr and continue from after the tag)
and includes two vif-tags for vifcode, or something else if needed."
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr)))
(set! (-> ,pkt vif0) ,vif0)
(set! (-> ,pkt vif1) ,vif1)
)
)
)
(defmacro dma-buffer-add-ret (buf)
"Add a dma-packet to a dma-buffer. This packet simply does a DMA 'return' "
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0))
(set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop)))
(set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop)))
)
)
)
(defmacro dma-buffer-add-gif-tag (buf giftag gifregs)
"Add a giftag to a dma-buffer."
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag
(set! (-> ,pkt tag) ,giftag)
(set! (-> ,pkt regs) ,gifregs)
)
)
)
(defmacro dma-buffer-add-uint64 (buf &rest body)
"Add 64-bit words to a dma-buffer. See dma-buffer-add-base-data"
`(dma-buffer-add-base-data ,buf uint64 ,body)
)
(defmacro dma-buffer-add-uint128 (buf &rest body)
"Add 128-bit words to a dma-buffer. See dma-buffer-add-base-data"
`(dma-buffer-add-base-data ,buf uint128 ,body)
)
(defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list)
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop.
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
(let ((reg-count (length reg-list))
(qwc (+ (length reg-list) 1))
(reg-names (apply first reg-list))
(reg-datas (apply second reg-list))
)
`(begin
;; dma tag
(dma-buffer-add-cnt-vif2 ,buf ,qwc
(new 'static 'vif-tag :cmd (vif-cmd flusha))
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
)
;; gif tag for editing gs regs
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
)
;; gs regs
(dma-buffer-add-uint64 ,buf
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
)
)
)
)
(defmacro dma-buffer-add-gs-set (buf &rest reg-list)
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
(let ((reg-count (length reg-list))
(qwc (+ (length reg-list) 1))
(reg-names (apply first reg-list))
(reg-datas (apply second reg-list))
)
`(begin
;; dma tag
(dma-buffer-add-cnt-vif2 ,buf ,qwc
(new 'static 'vif-tag :cmd (vif-cmd nop))
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
)
;; gif tag for editing gs regs
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
)
;; gs regs
(dma-buffer-add-uint64 ,buf
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
)
)
)
)
(defmacro with-dma-bucket (bindings &rest body)
"Start a new dma-bucket in body that will be finished at the end.
The bindings are the dma-buffer, dma-bucket and bucket-id respectively."
+11 -54
View File
@@ -129,19 +129,7 @@
;; definition for function tie-near-init-engine
;; INFO: Return type mismatch int vs none.
;; WARN: Failed store: (s.w! (+ a0-2 8) a1-4) at op 19
;; WARN: Failed store: (s.w! (+ a0-2 12) a1-6) at op 24
;; WARN: Failed store: (s.w! (+ a0-6 8) a1-9) at op 40
;; WARN: Failed store: (s.w! (+ a0-6 12) a1-10) at op 42
;; WARN: Failed store: (s.w! (+ a0-8 8) 0) at op 49
;; WARN: Failed store: (s.w! (+ a0-8 12) a1-12) at op 51
;; WARN: Failed store: (s.w! (+ v1-7 4) a0-11) at op 58
;; WARN: Failed store: (s.w! (+ v1-7 8) a0-12) at op 60
;; WARN: Failed store: (s.w! (+ v1-7 12) a0-13) at op 62
;; WARN: Failed store: (s.w! (+ v1-7 16) a0-14) at op 64
;; WARN: Failed store: (s.w! (+ v1-7 20) a0-15) at op 66
;; WARN: Failed store: (s.w! (+ v1-7 24) a0-16) at op 68
;; WARN: Failed store: (s.w! (+ v1-7 28) a0-17) at op 70
;; ERROR: Failed store: (s.w! (+ a0-2 8) a1-4) at op 19
(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)
@@ -215,49 +203,18 @@
;; definition for function tie-near-end-buffer
;; INFO: Return type mismatch int vs none.
;; WARN: Failed store: (s.w! (+ a1-0 8) 0) at op 7
;; WARN: Failed store: (s.w! (+ a1-0 12) a2-1) at op 9
;; WARN: Failed store: (s.d! (+ a1-2 8) a2-4) at op 18
;; WARN: Failed store: (s.d! (+ a1-4 8) a2-6) at op 26
;; WARN: Failed store: (s.w! (+ a1-6 8) a2-8) at op 34
;; WARN: Failed store: (s.w! (+ a1-6 12) 0) at op 35
;; WARN: Failed store: (s.w! (+ a0-1 4) a1-9) at op 43
;; WARN: Failed store: (s.w! (+ a0-1 8) a1-10) at op 45
;; WARN: Failed store: (s.w! (+ a0-1 12) a1-11) at op 47
;; WARN: Failed store: (s.w! (+ a0-1 16) 0) at op 48
;; WARN: Failed store: (s.w! (+ a0-1 20) 0) at op 49
;; WARN: Failed store: (s.w! (+ a0-1 24) 0) at op 50
;; WARN: Failed store: (s.w! (+ a0-1 28) 0) at op 51
;; ERROR: Failed store: (s.w! (+ a1-0 8) 0) at op 7
(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))
)
(dma-buffer-add-gs-set arg0 (test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
)
(let* ((v1-5 arg0)
(a1-6 (-> v1-5 base))
)
+200
View File
@@ -1284,6 +1284,206 @@
)
)
(defmacro gs-reg-list (&rest reg-ids)
"Generate a giftag register descriptor list from reg-ids."
(let ((reg-count (length reg-ids)))
(when (> (length reg-ids) 16)
(ferror "too many regs passed to gs-reg-list")
)
(let ((list-to-splice '())
(cur-lst reg-ids)
(i -1))
;; this is questionable.
(while (and (not (null? cur-lst)) (< i 15))
(push! list-to-splice (cons 'gif-reg-id (cons (car cur-lst) '())))
(push! list-to-splice (string->symbol-format ":regs{}" (inc! i)))
(pop! cur-lst)
)
`(new 'static 'gif-tag-regs
,@list-to-splice
)
)
#| ;; the opengoal compiler does not have enough constant propagation for this for now
(let ((i -1))
`(the-as gif-tag-regs (logior ,@(apply (lambda (x)
`(shl (the-as uint (gif-reg-id ,x)) ,(* 4 (inc! i)))
) reg-ids)
))
)|#
)
)
(defmacro dma-buffer-add-base-type (buf pkt dma-type &rest body)
"Base macro for adding stuff to a dma-buffer. Don't use this directly!"
(with-gensyms (dma-buf)
`(let* ((,dma-buf ,buf)
(,pkt (the-as ,dma-type (-> ,dma-buf base))))
,@body
(set! (-> ,dma-buf base) (&+ (the-as pointer ,pkt) (size-of ,dma-type)))
)
)
)
(defmacro dma-buffer-add-base-data (buf data-type forms)
"Base macro for adding data words to a dma-buffer.
Each form in forms is converted into data-type and added to the buffer. NO TYPE CHECKING is performed, so be careful!"
(with-gensyms (dma-buf ptr)
`(let* ((,dma-buf ,buf)
(,ptr (the-as (pointer ,data-type) (-> ,dma-buf base))))
,@(apply-i (lambda (x i) `(set! (-> ,ptr ,i) (the-as ,data-type ,x))) forms)
(set! (-> ,dma-buf base) (&+ (the-as pointer ,ptr) (* ,(length forms) (size-of ,data-type))))
)
)
)
(defmacro dma-buffer-add-cnt-vif2 (buf qwc vif0 vif1)
"Add a dma-packet to a dma-buffer.
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data after the tag and continue from after that point)
and includes two vif-tags for vifcode, or something else if needed."
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id cnt) :qwc ,qwc))
(set! (-> ,pkt vif0) ,vif0)
(set! (-> ,pkt vif1) ,vif1)
)
)
)
(defmacro dma-buffer-add-ref-vif2 (buf qwc addr vif0 vif1)
"Add a dma-packet to a dma-buffer.
The packet is made up of a 'cnt' DMAtag (transfer qwc qwords of data at addr and continue from after the tag)
and includes two vif-tags for vifcode, or something else if needed."
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ref) :qwc ,qwc :addr (the-as int ,addr)))
(set! (-> ,pkt vif0) ,vif0)
(set! (-> ,pkt vif1) ,vif1)
)
)
)
(defmacro dma-buffer-add-ret (buf)
"Add a dma-packet to a dma-buffer. This packet simply does a DMA 'return' "
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt dma-packet
(set! (-> ,pkt dma) (new 'static 'dma-tag :id (dma-tag-id ret) :qwc 0))
(set! (-> ,pkt vif0) (new 'static 'vif-tag :cmd (vif-cmd nop)))
(set! (-> ,pkt vif1) (new 'static 'vif-tag :cmd (vif-cmd nop)))
)
)
)
(defmacro dma-buffer-add-gif-tag (buf giftag gifregs)
"Add a giftag to a dma-buffer."
(with-gensyms (pkt)
`(dma-buffer-add-base-type ,buf ,pkt gs-gif-tag
(set! (-> ,pkt tag) ,giftag)
(set! (-> ,pkt regs) ,gifregs)
)
)
)
(defmacro dma-buffer-add-uint64 (buf &rest body)
"Add 64-bit words to a dma-buffer. See dma-buffer-add-base-data"
`(dma-buffer-add-base-data ,buf uint64 ,body)
)
(defmacro dma-buffer-add-uint128 (buf &rest body)
"Add 128-bit words to a dma-buffer. See dma-buffer-add-base-data"
`(dma-buffer-add-base-data ,buf uint128 ,body)
)
(defmacro dma-buffer-add-gs-set-flusha (buf &rest reg-list)
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
The packet runs the flusha command which waits for GIF transfer to end and VU1 microprogram to stop.
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
(let ((reg-count (length reg-list))
(qwc (+ (length reg-list) 1))
(reg-names (apply first reg-list))
(reg-datas (apply second reg-list))
)
`(begin
;; dma tag
(dma-buffer-add-cnt-vif2 ,buf ,qwc
(new 'static 'vif-tag :cmd (vif-cmd flusha))
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
)
;; gif tag for editing gs regs
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
)
;; gs regs
(dma-buffer-add-uint64 ,buf
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
)
)
)
)
(defmacro dma-buffer-add-gs-set (buf &rest reg-list)
"Add a gif cnt dma packet to a dma-buffer for setting GS registers. Up to 16 can be set at once.
reg-list is a list of pairs where the car is the register name and the cadr is the value to be set for that register."
(let ((reg-count (length reg-list))
(qwc (+ (length reg-list) 1))
(reg-names (apply first reg-list))
(reg-datas (apply second reg-list))
)
`(begin
;; dma tag
(dma-buffer-add-cnt-vif2 ,buf ,qwc
(new 'static 'vif-tag :cmd (vif-cmd nop))
(new 'static 'vif-tag :cmd (vif-cmd direct) :imm ,qwc)
)
;; gif tag for editing gs regs
(dma-buffer-add-gif-tag ,buf (new 'static 'gif-tag64 :nloop 1 :eop 1 :nreg ,reg-count)
(gs-reg-list a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d a+d)
)
;; gs regs
(dma-buffer-add-uint64 ,buf
,@(apply2 (lambda (x) x) (lambda (x) `(gs-reg64 ,x)) reg-datas reg-names)
)
)
)
)
(defmacro with-dma-bucket (bindings &rest body)
"Start a new dma-bucket in body that will be finished at the end.
The bindings are the dma-buffer, dma-bucket and bucket-id respectively."
+73 -94
View File
@@ -664,68 +664,68 @@
(with-dma-buffer-add-bucket ((buf (-> *display* frames (-> *display* on-screen) debug-buf))
bucket
)
(let ((p0 (new 'stack 'vector4w)))
(let ((p1 (new 'stack 'vector4w)))
(set! (-> p0 quad) (-> start quad))
(set! (-> p1 quad) (-> end quad))
(set! (-> p0 x) (* (+ (-> p0 x) 2048) 16))
(set! (-> p0 y) (* -16 (- 2048 (-> p0 y))))
(set! (-> p0 z) #x7fffff)
(set! (-> p1 x) (* (+ (-> p1 x) 2048) 16))
(set! (-> p1 y) (* -16 (- 2048 (-> p1 y))))
(set! (-> p1 z) #x7fffff)
(let ((a0-18 (the-as (pointer uint64) (-> buf base))))
(let* ((a1-7 buf)
(a2-3 (the-as dma-packet (-> a1-7 base)))
)
(set! (-> a2-3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> a2-3 vif0) (new 'static 'vif-tag))
(set! (-> a2-3 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
(set! (-> a1-7 base) (&+ (the-as pointer a2-3) 16))
)
(let* ((a1-8 buf)
(giftag (the-as gs-gif-tag (-> a1-8 base)))
)
(set! (-> giftag tag) (new 'static 'gif-tag64
:nloop #x1
:eop #x1
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1)
:nreg #x4
)
)
(set! (-> giftag regs) (new 'static 'gif-tag-regs
:regs0 (gif-reg-id rgbaq)
:regs1 (gif-reg-id xyzf2)
:regs2 (gif-reg-id rgbaq)
:regs3 (gif-reg-id xyzf2)
)
)
(set! (-> a1-8 base) (&+ (the-as pointer giftag) 16))
)
(let* ((a1-9 buf)
(v0 (the-as vector4w-2 (-> a1-9 base)))
)
(set! (-> v0 vector 0 quad) (-> color quad))
(set! (-> v0 vector 1 quad) (-> p0 quad))
(set! (-> a1-9 base) (&+ (the-as pointer v0) 32))
)
(let* ((a1-10 buf)
(v1 (the-as vector4w-2 (-> a1-10 base)))
)
(set! (-> v1 vector 0 quad) (-> color quad))
(set! (-> v1 vector 1 quad) (-> p1 quad))
(set! (-> a1-10 base) (&+ (the-as pointer v1) 32))
)
(let ((a1-14 (/ (the-as int (+ (- -16 (the-as int a0-18)) (the-as int (-> buf base)))) 16)))
(cond
((nonzero? a1-14)
(logior! (-> a0-18 0) (shr (shl a1-14 48) 48))
(logior! (-> a0-18 1) (shl (shr (shl a1-14 48) 48) 32))
(let ((p0 (new 'stack 'vector4w))
(p1 (new 'stack 'vector4w))
)
(set! (-> p0 quad) (-> start quad))
(set! (-> p1 quad) (-> end quad))
(set! (-> p0 x) (* (+ (-> p0 x) 2048) 16))
(set! (-> p0 y) (* -16 (- 2048 (-> p0 y))))
(set! (-> p0 z) #x7fffff)
(set! (-> p1 x) (* (+ (-> p1 x) 2048) 16))
(set! (-> p1 y) (* -16 (- 2048 (-> p1 y))))
(set! (-> p1 z) #x7fffff)
(let ((a0-18 (the-as (pointer uint64) (-> buf base))))
(let* ((a1-7 buf)
(a2-3 (the-as dma-packet (-> a1-7 base)))
)
(else
(set! (-> buf base) a0-18)
(set! (-> a2-3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> a2-3 vif0) (new 'static 'vif-tag))
(set! (-> a2-3 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1))
(set! (-> a1-7 base) (&+ (the-as pointer a2-3) 16))
)
(let* ((a1-8 buf)
(giftag (the-as gs-gif-tag (-> a1-8 base)))
)
(set! (-> giftag tag) (new 'static 'gif-tag64
:nloop #x1
:eop #x1
:pre #x1
:prim (new 'static 'gs-prim :prim (gs-prim-type line) :iip #x1 :abe #x1)
:nreg #x4
)
)
(set! (-> giftag regs) (new 'static 'gif-tag-regs
:regs0 (gif-reg-id rgbaq)
:regs1 (gif-reg-id xyzf2)
:regs2 (gif-reg-id rgbaq)
:regs3 (gif-reg-id xyzf2)
)
)
(set! (-> a1-8 base) (&+ (the-as pointer giftag) 16))
)
(let* ((a1-9 buf)
(v0 (the-as vector4w-2 (-> a1-9 base)))
)
(set! (-> v0 vector 0 quad) (-> color quad))
(set! (-> v0 vector 1 quad) (-> p0 quad))
(set! (-> a1-9 base) (&+ (the-as pointer v0) 32))
)
(let* ((a1-10 buf)
(v1 (the-as vector4w-2 (-> a1-10 base)))
)
(set! (-> v1 vector 0 quad) (-> color quad))
(set! (-> v1 vector 1 quad) (-> p1 quad))
(set! (-> a1-10 base) (&+ (the-as pointer v1) 32))
)
(let ((a1-14 (/ (the-as int (+ (- -16 (the-as int a0-18)) (the-as int (-> buf base)))) 16)))
(cond
((nonzero? a1-14)
(logior! (-> a0-18 0) (shr (shl a1-14 48) 48))
(logior! (-> a0-18 1) (shl (shr (shl a1-14 48) 48) 32))
)
(else
(set! (-> buf base) a0-18)
)
)
)
@@ -1894,7 +1894,7 @@
;; definition (debug) for function add-debug-bound
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ v1-29 8) 0) at op 110
;; ERROR: Failed store: (s.w! (+ a0-3 8) 0) at op 36
;; WARN: Function add-debug-bound has a return type of none, but the expression builder found a return statement.
(defun-debug add-debug-bound ((buf bucket-id) (pts (inline-array vector)) (c0 int) (c1 rgba) (flash rgba) (arg5 int))
(local-vars (sv-16 pointer) (sv-32 int))
@@ -1914,39 +1914,18 @@
(with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf))
buf
)
(let ((v1-16 s4-0))
(let ((a0-3 (the-as dma-packet (-> v1-16 base))))
(set! (-> a0-3 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-3 vif0) (new 'static 'vif-tag))
(set! (-> a0-3 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-16 base) (the-as pointer (the-as dma-packet (&+ a0-3 16))))
)
)
(let ((v1-17 s4-0))
(let ((a0-5 (the-as gs-gif-tag (-> v1-17 base))))
(set! (-> a0-5 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-5 regs) GIF_REGS_ALL_AD)
(set! (-> v1-17 base) (the-as pointer (the-as gs-gif-tag (&+ a0-5 16))))
)
)
(let ((v1-18 s4-0))
(let ((a0-7 (-> v1-18 base)))
(set! (-> (the-as (pointer gs-zbuf) a0-7) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(set! (-> (the-as (pointer gs-reg64) a0-7) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) a0-7) 2) (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(set! (-> (the-as (pointer gs-reg64) a0-7) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) a0-7) 4) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a0-7) 5) (gs-reg64 alpha-1))
(set! (-> v1-18 base) (&+ a0-7 48))
)
)
(dma-buffer-add-gs-set s4-0
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
)
(set! sv-16 (-> s4-0 base))
(&+! (-> s4-0 base) 16)
(add-boundary-shader (new 'static 'texture-id :index #x3 :page #x70c) s4-0)
+24 -80
View File
@@ -1717,52 +1717,24 @@
;; definition for function default-init-buffer
;; WARN: Return type mismatch symbol vs none.
;; ERROR: Failed store: (s.w! (+ t1-0 8) t2-1) at op 24
(defun default-init-buffer ((arg0 bucket-id) (arg1 gs-zbuf) (arg2 gs-test))
(let ((v1-6 (-> *display* frames (-> *display* on-screen) bucket-group arg0)))
(when (!= v1-6 (-> v1-6 last))
(let* ((a0-8 (-> *display* frames (-> *display* on-screen) global-buf))
(a3-3 (-> a0-8 base))
)
(let* ((t0-0 a0-8)
(t1-0 (the-as dma-packet (-> t0-0 base)))
)
(set! (-> t1-0 dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
(set! (-> t1-0 vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> t1-0 vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
(set! (-> t0-0 base) (the-as pointer (&+ t1-0 16)))
)
(let* ((t0-1 a0-8)
(t1-2 (the-as object (-> t0-1 base)))
)
(set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9))
(set! (-> (the-as gs-gif-tag t1-2) regs) GIF_REGS_ALL_AD)
(set! (-> t0-1 base) (&+ (the-as pointer t1-2) 16))
)
(let* ((t0-2 a0-8)
(t1-4 (-> t0-2 base))
)
(set! (-> (the-as (pointer gs-zbuf) t1-4) 0) arg1)
(set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) t1-4) 2) arg2)
(set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) t1-4) 4) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) t1-4) 5) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer uint64) t1-4) 6) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) t1-4) 7) (gs-reg64 pabe))
(set! (-> (the-as (pointer gs-clamp) t1-4) 8)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) t1-4) 9) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-tex0) t1-4) 10) (new 'static 'gs-tex0 :tbp0 #x60))
(set! (-> (the-as (pointer gs-reg64) t1-4) 11) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-texa) t1-4) 12) (new 'static 'gs-texa :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) t1-4) 13) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-texclut) t1-4) 14) (new 'static 'gs-texclut :cbw #x4))
(set! (-> (the-as (pointer gs-reg64) t1-4) 15) (gs-reg64 texclut))
(set! (-> (the-as (pointer uint64) t1-4) 16) (the-as uint *fog-color*))
(set! (-> (the-as (pointer gs-reg64) t1-4) 17) (gs-reg64 fogcol))
(set! (-> t0-2 base) (&+ t1-4 144))
)
(dma-buffer-add-gs-set-flusha a0-8
(zbuf-1 arg1)
(test-1 arg2)
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(pabe 0)
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(texa (new 'static 'gs-texa :ta1 #x80))
(texclut (new 'static 'gs-texclut :cbw #x4))
(fogcol *fog-color*)
)
(let ((a1-18 (the-as object (-> a0-8 base))))
(set! (-> (the-as dma-packet a1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> v1-6 next)))
(set! (-> (the-as dma-packet a1-18) vif0) (new 'static 'vif-tag))
@@ -1778,52 +1750,24 @@
;; definition for function default-end-buffer
;; WARN: Return type mismatch symbol vs none.
;; ERROR: Failed store: (s.w! (+ t1-0 8) t2-1) at op 24
(defun default-end-buffer ((arg0 bucket-id) (arg1 gs-zbuf) (arg2 gs-test))
(let ((v1-6 (-> *display* frames (-> *display* on-screen) bucket-group arg0)))
(when (!= v1-6 (-> v1-6 last))
(let* ((a3-2 (-> *display* frames (-> *display* on-screen) global-buf))
(a0-8 (-> a3-2 base))
)
(let* ((t0-1 a3-2)
(t1-0 (the-as dma-packet (-> t0-1 base)))
)
(set! (-> t1-0 dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
(set! (-> t1-0 vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> t1-0 vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
(set! (-> t0-1 base) (the-as pointer (&+ t1-0 16)))
)
(let* ((t0-2 a3-2)
(t1-2 (the-as object (-> t0-2 base)))
)
(set! (-> (the-as gs-gif-tag t1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9))
(set! (-> (the-as gs-gif-tag t1-2) regs) GIF_REGS_ALL_AD)
(set! (-> t0-2 base) (&+ (the-as pointer t1-2) 16))
)
(let* ((t0-3 a3-2)
(t1-4 (-> t0-3 base))
)
(set! (-> (the-as (pointer gs-zbuf) t1-4) 0) arg1)
(set! (-> (the-as (pointer gs-reg64) t1-4) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) t1-4) 2) arg2)
(set! (-> (the-as (pointer gs-reg64) t1-4) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) t1-4) 4) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) t1-4) 5) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer uint64) t1-4) 6) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) t1-4) 7) (gs-reg64 pabe))
(set! (-> (the-as (pointer gs-clamp) t1-4) 8)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) t1-4) 9) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-tex0) t1-4) 10) (new 'static 'gs-tex0 :tbp0 #x60))
(set! (-> (the-as (pointer gs-reg64) t1-4) 11) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-texa) t1-4) 12) (new 'static 'gs-texa :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) t1-4) 13) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-texclut) t1-4) 14) (new 'static 'gs-texclut :cbw #x4))
(set! (-> (the-as (pointer gs-reg64) t1-4) 15) (gs-reg64 texclut))
(set! (-> (the-as (pointer uint64) t1-4) 16) (the-as uint *fog-color*))
(set! (-> (the-as (pointer gs-reg64) t1-4) 17) (gs-reg64 fogcol))
(set! (-> t0-3 base) (&+ t1-4 144))
)
(dma-buffer-add-gs-set-flusha a3-2
(zbuf-1 arg1)
(test-1 arg2)
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(pabe 0)
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(texa (new 'static 'gs-texa :ta1 #x80))
(texclut (new 'static 'gs-texclut :cbw #x4))
(fogcol *fog-color*)
)
(let ((t0-4 (-> a3-2 base)))
(let ((a1-18 (the-as object (-> a3-2 base))))
(set! (-> (the-as dma-packet a1-18) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
+4 -25
View File
@@ -261,7 +261,7 @@
;; definition for method 9 of type screen-filter
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ v1-16 8) 0) at op 85
;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 28
(defmethod draw screen-filter ((obj screen-filter))
(local-vars (v1-1 float))
(rlet ((vf0 :class vf)
@@ -288,30 +288,9 @@
(with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf))
(-> obj bucket)
)
(let ((v1-7 s4-0))
(let ((a0-2 (the-as object (-> v1-7 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-7 base) (&+ (the-as pointer a0-2) 16))
)
)
(let ((v1-8 s4-0))
(let ((a0-4 (the-as object (-> v1-8 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) GIF_REGS_ALL_AD)
(set! (-> v1-8 base) (&+ (the-as pointer a0-4) 16))
)
)
(let ((v1-9 s4-0))
(let ((a0-6 (-> v1-9 base)))
(set! (-> (the-as (pointer gs-test) a0-6) 0)
(new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 test-1))
(set! (-> v1-9 base) (&+ a0-6 16))
)
)
(dma-buffer-add-gs-set s4-0
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
)
(let ((t1-0 (new 'static 'rgba
:r (the int (-> obj color x))
:g (the int (-> obj color y))
+1 -1
View File
@@ -1229,7 +1229,7 @@
(set! (-> *video-params* display-dy) (* (/ (-> s4-0 display-dy) 2) 2))
)
(set! (-> *blit-displays-work* horizontal-flip-flag)
(the-as basic (logtest? (-> *game-info* secrets) (game-secrets hflip-screen)))
(logtest? (-> *game-info* secrets) (game-secrets hflip-screen))
)
(set! (-> s5-0 allow-blackout) (-> s4-0 allow-blackout))
(set! (-> s5-0 bg-a-speed) (-> s4-0 bg-a-speed))
+19 -23
View File
@@ -3,25 +3,25 @@
;; definition of type blit-displays-work
(deftype blit-displays-work (structure)
((adgif-tmpl dma-gif-packet :inline :offset-assert 0)
(sprite-tmpl dma-gif-packet :inline :offset-assert 32)
(sprite-slow-tmpl dma-gif-packet :inline :offset-assert 64)
(line-tmpl dma-gif-packet :inline :offset-assert 96)
(scan-tmpl dma-gif-packet :inline :offset-assert 128)
(color vector4w :inline :offset-assert 160)
(line-color uint64 :offset-assert 176)
(scan-colors vector4w 15 :inline :offset-assert 192)
(menu-mode basic :offset-assert 432)
(screen-copied basic :offset-assert 436)
(vu1-enable-user-menu uint64 :offset-assert 440)
(texture-enable-user-menu uint32 :offset-assert 448)
(count-down uint32 :offset-assert 452)
(horizontal-flip-flag basic :offset-assert 456)
(scan-alpha float :offset-assert 460)
(scanline uint32 :offset-assert 464)
(progress-interp float :offset-assert 468)
(progress-interp-dest float :offset-assert 472)
(progress-interp-speed float :offset-assert 476)
((adgif-tmpl dma-gif-packet :inline :offset-assert 0)
(sprite-tmpl dma-gif-packet :inline :offset-assert 32)
(sprite-slow-tmpl dma-gif-packet :inline :offset-assert 64)
(line-tmpl dma-gif-packet :inline :offset-assert 96)
(scan-tmpl dma-gif-packet :inline :offset-assert 128)
(color vector4w :inline :offset-assert 160)
(line-color uint64 :offset-assert 176)
(scan-colors vector4w 15 :inline :offset-assert 192)
(menu-mode symbol :offset-assert 432)
(screen-copied symbol :offset-assert 436)
(vu1-enable-user-menu vu1-renderer-mask :offset-assert 440)
(texture-enable-user-menu uint32 :offset-assert 448)
(count-down uint32 :offset-assert 452)
(horizontal-flip-flag symbol :offset-assert 456)
(scan-alpha float :offset-assert 460)
(scanline uint32 :offset-assert 464)
(progress-interp float :offset-assert 468)
(progress-interp-dest float :offset-assert 472)
(progress-interp-speed float :offset-assert 476)
)
:method-count-assert 9
:size-assert #x1e0
@@ -60,7 +60,3 @@
;; failed to figure out what this is:
0
File diff suppressed because it is too large Load Diff
+30 -112
View File
@@ -292,133 +292,51 @@
;; ERROR: function was not converted to expressions. Cannot decompile.
;; definition for function set-display-gs-state
;; ERROR: Failed store: (s.w! (+ t3-0 8) t4-1) at op 7
(defun set-display-gs-state ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int))
(let ((t2-0 (/ (+ arg2 63) 64)))
(let* ((v1-1 arg0)
(t3-0 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as dma-packet t3-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet t3-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> (the-as dma-packet t3-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-1 base) (&+ (the-as pointer t3-0) 16))
)
(let* ((v1-2 arg0)
(t3-2 (the-as object (-> v1-2 base)))
)
(set! (-> (the-as gs-gif-tag t3-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7))
(set! (-> (the-as gs-gif-tag t3-2) regs) GIF_REGS_ALL_AD)
(set! (-> v1-2 base) (&+ (the-as pointer t3-2) 16))
)
(let* ((v1-3 arg0)
(t3-4 (-> v1-3 base))
)
(set! (-> (the-as (pointer gs-scissor) t3-4) 0)
(new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1))
)
(set! (-> (the-as (pointer gs-reg64) t3-4) 1) (gs-reg64 scissor-1))
(set! (-> (the-as (pointer gs-xy-offset) t3-4) 2) (new 'static 'gs-xy-offset))
(set! (-> (the-as (pointer gs-reg64) t3-4) 3) (gs-reg64 xyoffset-1))
(set! (-> (the-as (pointer gs-frame) t3-4) 4)
(new 'static 'gs-frame :fbp arg1 :fbw t2-0 :psm arg5 :fbmsk arg4)
)
(set! (-> (the-as (pointer gs-reg64) t3-4) 5) (gs-reg64 frame-1))
(set! (-> (the-as (pointer gs-test) t3-4) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
(set! (-> (the-as (pointer gs-reg64) t3-4) 7) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-texa) t3-4) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) t3-4) 9) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-zbuf) t3-4) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(set! (-> (the-as (pointer gs-reg64) t3-4) 11) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer uint64) t3-4) 12) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) t3-4) 13) (gs-reg64 texflush))
(set! (-> v1-3 base) (&+ t3-4 112))
)
(dma-buffer-add-gs-set-flusha arg0
(scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)))
(xyoffset-1 (new 'static 'gs-xy-offset))
(frame-1 (new 'static 'gs-frame :fbp arg1 :fbw t2-0 :psm arg5 :fbmsk arg4))
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
(texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(texflush 0)
)
)
arg0
)
;; definition for function set-display-gs-state-offset
;; ERROR: Failed store: (s.w! (+ t5-0 8) t6-1) at op 7
(defun set-display-gs-state-offset ((arg0 dma-buffer) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int))
(let ((t4-0 (/ (+ arg2 63) 64)))
(let* ((v1-1 arg0)
(t5-0 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as dma-packet t5-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet t5-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> (the-as dma-packet t5-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-1 base) (&+ (the-as pointer t5-0) 16))
)
(let* ((v1-2 arg0)
(t5-2 (the-as object (-> v1-2 base)))
)
(set! (-> (the-as gs-gif-tag t5-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7))
(set! (-> (the-as gs-gif-tag t5-2) regs) GIF_REGS_ALL_AD)
(set! (-> v1-2 base) (&+ (the-as pointer t5-2) 16))
)
(let* ((v1-3 arg0)
(t5-4 (-> v1-3 base))
)
(set! (-> (the-as (pointer gs-scissor) t5-4) 0)
(new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1))
)
(set! (-> (the-as (pointer gs-reg64) t5-4) 1) (gs-reg64 scissor-1))
(set! (-> (the-as (pointer gs-xy-offset) t5-4) 2)
(new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16))
)
(set! (-> (the-as (pointer gs-reg64) t5-4) 3) (gs-reg64 xyoffset-1))
(set! (-> (the-as (pointer gs-frame) t5-4) 4)
(new 'static 'gs-frame :fbp arg1 :fbw t4-0 :psm arg5 :fbmsk arg4)
)
(set! (-> (the-as (pointer gs-reg64) t5-4) 5) (gs-reg64 frame-1))
(set! (-> (the-as (pointer gs-test) t5-4) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
(set! (-> (the-as (pointer gs-reg64) t5-4) 7) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-texa) t5-4) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) t5-4) 9) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-zbuf) t5-4) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(set! (-> (the-as (pointer gs-reg64) t5-4) 11) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer uint64) t5-4) 12) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) t5-4) 13) (gs-reg64 texflush))
(set! (-> v1-3 base) (&+ t5-4 112))
)
(dma-buffer-add-gs-set-flusha arg0
(scissor-1 (new 'static 'gs-scissor :scax1 (+ arg2 -1) :scay1 (+ arg3 -1)))
(xyoffset-1 (new 'static 'gs-xy-offset :ofx (* arg6 16) :ofy (* arg7 16)))
(frame-1 (new 'static 'gs-frame :fbp arg1 :fbw t4-0 :psm arg5 :fbmsk arg4))
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
(texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(texflush 0)
)
)
arg0
)
;; definition for function reset-display-gs-state
;; ERROR: Failed store: (s.w! (+ a2-0 8) a3-1) at op 5
(defun reset-display-gs-state ((arg0 display) (arg1 dma-buffer))
(let* ((v1-0 arg1)
(a2-0 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a2-0) dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a2-0) vif0) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> (the-as dma-packet a2-0) vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (&+ (the-as pointer a2-0) 16))
)
(let* ((v1-1 arg1)
(a2-2 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a2-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7))
(set! (-> (the-as gs-gif-tag a2-2) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a2-2) 16))
)
(let* ((v1-2 arg1)
(a1-1 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-scissor) a1-1) 0) (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f))
(set! (-> (the-as (pointer gs-reg64) a1-1) 1) (gs-reg64 scissor-1))
(set! (-> (the-as (pointer gs-xy-offset) a1-1) 2) (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300))
(set! (-> (the-as (pointer gs-reg64) a1-1) 3) (gs-reg64 xyoffset-1))
(set! (-> (the-as (pointer gs-frame) a1-1) 4) (new 'static 'gs-frame :fbp #x198 :fbw #x8))
(set! (-> (the-as (pointer gs-reg64) a1-1) 5) (gs-reg64 frame-1))
(set! (-> (the-as (pointer gs-test) a1-1) 6) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
(set! (-> (the-as (pointer gs-reg64) a1-1) 7) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-texa) a1-1) 8) (new 'static 'gs-texa :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) a1-1) 9) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-zbuf) a1-1) 10) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(set! (-> (the-as (pointer gs-reg64) a1-1) 11) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer uint64) a1-1) 12) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) a1-1) 13) (gs-reg64 texflush))
(set! (-> v1-2 base) (&+ a1-1 112))
)
(dma-buffer-add-gs-set-flusha arg1
(scissor-1 (new 'static 'gs-scissor :scax1 #x1ff :scay1 #x19f))
(xyoffset-1 (new 'static 'gs-xy-offset :ofx #x7000 :ofy #x7300))
(frame-1 (new 'static 'gs-frame :fbp #x198 :fbw #x8))
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
(texa (new 'static 'gs-texa :ta1 #x80))
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(texflush 0)
)
arg0
)
+3 -3
View File
@@ -355,8 +355,8 @@ bits 5 and 6 (0x20 and 0x40) should be zero"
;; definition of type gs-uv
(deftype gs-uv (uint64)
((u uint16 :offset 0 :size 14)
(v uint16 :offset 16 :size 14)
((u uint16 :offset 0 :size 16)
(v uint16 :offset 16 :size 16)
)
:method-count-assert 9
:size-assert #x8
@@ -462,7 +462,7 @@ bits 5 and 6 (0x20 and 0x40) should be zero"
(spsm uint8 :offset 24 :size 6)
(dbp uint16 :offset 32 :size 14)
(dbw uint8 :offset 48 :size 6)
(dpsm uint8 :offset 56 :size 6)
(dpsm gs-psm :offset 56 :size 6)
)
:method-count-assert 9
:size-assert #x8
+2 -22
View File
@@ -48,6 +48,7 @@
;; definition for function emerc-vu1-init-buffer
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-4 8) 0) at op 28
(defun emerc-vu1-init-buffer ((dma-bucket bucket-id) (test gs-test) (arg2 int))
(let ((bucket (-> *display* frames (-> *display* on-screen) bucket-group dma-bucket)))
(when (!= bucket (-> bucket last))
@@ -57,28 +58,7 @@
(set! (-> dma-buf base)
(the-as pointer (emerc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base))))
)
(let* ((v1-12 dma-buf)
(a0-4 (the-as object (-> v1-12 base)))
)
(set! (-> (the-as dma-packet a0-4) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-4) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-4) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-12 base) (&+ (the-as pointer a0-4) 16))
)
(let* ((v1-13 dma-buf)
(a0-6 (the-as object (-> v1-13 base)))
)
(set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD)
(set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16))
)
(let* ((v1-14 dma-buf)
(a0-8 (-> v1-14 base))
)
(set! (-> (the-as (pointer gs-test) a0-8) 0) test)
(set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1))
(set! (-> v1-14 base) (&+ a0-8 16))
)
(dma-buffer-add-gs-set dma-buf (test-1 test))
(let ((v1-15 (the-as dma-packet (-> dma-buf base))))
(set! (-> v1-15 dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next)))
(set! (-> v1-15 vif0) (new 'static 'vif-tag))
+19 -41
View File
@@ -213,6 +213,7 @@
)
;; definition for method 3 of type merc-fragment-control
;; INFO: this function exists in multiple non-identical object files
(defmethod inspect merc-fragment-control ((obj merc-fragment-control))
(format #t "[~8x] ~A~%" obj 'merc-fragment-control)
(format #t "~Tunsigned-four-count: ~D~%" (-> obj unsigned-four-count))
@@ -269,6 +270,7 @@
)
;; definition for method 3 of type merc-ctrl
;; INFO: this function exists in multiple non-identical object files
(defmethod inspect merc-ctrl ((obj merc-ctrl))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tname: ~A~%" (-> obj name))
@@ -582,6 +584,7 @@
)
;; definition for function merc-vu1-init-buffer
;; ERROR: Failed store: (s.w! (+ a0-4 8) 0) at op 28
(defun merc-vu1-init-buffer ((dma-bucket bucket-id) (arg1 int) (arg2 symbol))
(let ((bucket (-> *display* frames (-> *display* on-screen) bucket-group dma-bucket)))
(when (!= bucket (-> bucket last))
@@ -589,48 +592,23 @@
(s3-1 (-> dma-buf base))
)
(set! (-> dma-buf base)
(the-as
pointer
(merc-vu1-initialize-chain (the-as dma-gif-packet (the-as dma-packet (-> dma-buf base))) arg1)
)
(the-as pointer (merc-vu1-initialize-chain (the-as dma-gif-packet (-> dma-buf base)) arg1))
)
(let* ((v1-12 dma-buf)
(a0-4 (the-as dma-packet (-> v1-12 base)))
)
(set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
(set! (-> a0-4 vif0) (new 'static 'vif-tag))
(set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-12 base) (the-as pointer (the-as dma-packet (&+ a0-4 16))))
)
(let* ((v1-13 dma-buf)
(a0-6 (the-as object (-> v1-13 base)))
)
(set! (-> (the-as gs-gif-tag a0-6) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
(set! (-> (the-as gs-gif-tag a0-6) regs) GIF_REGS_ALL_AD)
(set! (-> v1-13 base) (&+ (the-as pointer a0-6) 16))
)
(let* ((v1-14 dma-buf)
(a0-8 (-> v1-14 base))
)
(set! (-> (the-as (pointer gs-test) a0-8) 0)
(new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-zbuf) a0-8) 2)
(if arg2
(new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24))
(new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1)
)
)
(set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 zbuf-1))
(set! (-> v1-14 base) (&+ a0-8 32))
)
(dma-buffer-add-gs-set dma-buf
(test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(zbuf-1 (if arg2
#x1000130
(the-as int (the-as uint #x101000130))
)
)
)
(let ((v1-15 (the-as object (-> dma-buf base))))
(set! (-> (the-as dma-packet v1-15) dma) (new 'static 'dma-tag :id (dma-tag-id next) :addr (-> bucket next)))
(set! (-> (the-as dma-packet v1-15) vif0) (new 'static 'vif-tag))
+2 -2
View File
@@ -1002,7 +1002,7 @@
(generate-verts (_type_ ocean-vert-array ocean-height-array) none 16)
(add-colors! (_type_ vector ocean-vertex) none 17)
(ocean-method-18 (_type_ (pointer ocean-colors) (pointer ocean-colors)) none 18)
(init-buffer! (_type_ dma-buffer) pointer 19)
(init-buffer! (_type_ dma-buffer) none 19)
(end-buffer! (_type_ dma-buffer) none 20)
(set-corners! (_type_ float float) float 21)
(ocean-near-add-call (_type_ dma-buffer int) none 22)
@@ -1064,7 +1064,7 @@
(draw-ocean-texture (_type_ dma-buffer int) none 78)
(ocean-method-79 (_type_ dma-buffer) none 79)
(ocean-method-80 (_type_ (pointer rgba)) none 80)
(ocean-method-81 (_type_ dma-buffer) none 81)
(ocean-method-81 (_type_ dma-buffer) int 81)
(draw-envmap-debug (_type_ dma-buffer) none 82)
(ocean-method-83 (_type_ dma-buffer float) none 83)
(ocean-method-84 (_type_ dma-buffer sky-upload-data vector4w float) none 84)
+4 -24
View File
@@ -668,32 +668,12 @@
;; definition for method 29 of type ocean
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 6
(defmethod draw-ocean-near ocean ((obj ocean) (arg0 dma-buffer))
(local-vars (sv-16 uint))
(let* ((v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))
)
(let* ((v1-1 arg0)
(a0-3 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16))
)
(let* ((v1-2 arg0)
(a0-5 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-test) a0-5) 0)
(new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal))
)
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 test-1))
(set! (-> v1-2 base) (&+ a0-5 16))
)
(dma-buffer-add-gs-set arg0
(test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest greater-equal)))
)
(dma-buffer-add-vu-function arg0 ocean-near-block 1)
(let* ((v1-3 arg0)
(a0-8 (the-as object (-> v1-3 base)))
File diff suppressed because it is too large Load Diff
+17 -75
View File
@@ -1114,83 +1114,29 @@
)
;; definition for method 19 of type ocean
;; WARN: Return type mismatch pointer vs none.
;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 5
(defmethod init-buffer! ocean ((obj ocean) (arg0 dma-buffer))
"Initialize [[ocean]] DMA buffer.
@returns Pointer to the next DMA buffer"
(let* ((v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))
)
(let* ((v1-1 arg0)
(a0-3 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9))
(set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16))
)
(let* ((s5-0 arg0)
(s4-0 (-> s5-0 base))
)
(set! (-> (the-as (pointer gs-test) s4-0) 0)
(new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) s4-0) 1) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) s4-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) s4-0) 3) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-tex0) s4-0) 4)
(new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :th (log2 128) :tw (log2 128))
)
(set! (-> (the-as (pointer gs-reg64) s4-0) 5) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) s4-0) 6) (-> obj tex1))
(set! (-> (the-as (pointer gs-reg64) s4-0) 7) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-texa) s4-0) 8) (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) s4-0) 9) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-miptbp) s4-0) 10)
(new 'static 'gs-miptbp :tbp1 #x6a0 :tbw1 #x1 :tbp2 #x7a0 :tbp3 #x7e0)
)
(set! (-> (the-as (pointer gs-reg64) s4-0) 11) (gs-reg64 miptbp1-1))
(set! (-> (the-as (pointer gs-miptbp) s4-0) 12) (new 'static 'gs-miptbp :tbp1 #x800 :tbp2 #x820 :tbp3 #x840))
(set! (-> (the-as (pointer gs-reg64) s4-0) 13) (gs-reg64 miptbp2-1))
(set! (-> (the-as (pointer gs-clamp) s4-0) 14) (new 'static 'gs-clamp))
(set! (-> (the-as (pointer gs-reg64) s4-0) 15) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-fogcol) s4-0) 16) (the-as gs-fogcol *fog-color*))
(set! (-> (the-as (pointer gs-reg64) s4-0) 17) (gs-reg64 fogcol))
(let ((v0-2 (&+ s4-0 144)))
(set! (-> s5-0 base) v0-2)
v0-2
)
)
"Initialize [[ocean]] DMA buffer."
(dma-buffer-add-gs-set arg0
(test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x2a0 :tbw #x2 :th (log2 128) :tw (log2 128)))
(tex1-1 (-> obj tex1))
(texa (new 'static 'gs-texa :ta0 #x80 :ta1 #x80))
(miptbp1-1 (new 'static 'gs-miptbp :tbp1 #x6a0 :tbw1 #x1 :tbp2 #x7a0 :tbp3 #x7e0))
(miptbp2-1 (new 'static 'gs-miptbp :tbp1 #x800 :tbp2 #x820 :tbp3 #x840))
(clamp-1 (new 'static 'gs-clamp))
(fogcol *fog-color*)
)
(none)
)
;; definition for method 20 of type ocean
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 4
(defmethod end-buffer! ocean ((obj ocean) (arg0 dma-buffer))
(let* ((v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))
)
(let* ((v1-1 arg0)
(a0-3 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16))
)
(let* ((v1-2 arg0)
(a0-5 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-texa) a0-5) 0) (new 'static 'gs-texa :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 texa))
(set! (-> v1-2 base) (&+ a0-5 16))
)
(dma-buffer-add-gs-set arg0 (texa (new 'static 'gs-texa :ta1 #x80)))
0
(none)
)
@@ -1613,7 +1559,3 @@
;; definition (debug) for function test-to-from-spr
;; ERROR: function was not converted to expressions. Cannot decompile.
+12 -57
View File
@@ -672,36 +672,9 @@
s2-2
(the-as int (-> *instance-shrub-work* start-bank (-> (the-as prototype-bucket-shrub s1-0) mod-count 1)))
)
(when (zero? sv-80)
(let* ((v1-94 s2-2)
(a0-36 (-> v1-94 base))
)
(set! (-> (the-as (pointer int64) a0-36)) #x10000002)
(s.w! (+ a0-36 8) 0)
(let ((a1-44 #x50000002))
(s.w! (+ a0-36 12) a1-44)
)
(set! (-> v1-94 base) (&+ a0-36 16))
(if (zero? sv-80)
(dma-buffer-add-gs-set s2-2 (test-1 sv-48))
)
(let* ((v1-95 s2-2)
(a0-38 (-> v1-95 base))
)
(set! (-> (the-as (pointer uint64) a0-38)) (make-u128 0 (the-as uint #x1000000000008001)))
(let ((a1-47 (the-as uint #xeeeeeeeeeeeeeeee)))
(s.d! (+ a0-38 8) a1-47)
)
(set! (-> v1-95 base) (&+ a0-38 16))
)
(let* ((v1-96 s2-2)
(a0-40 (-> v1-96 base))
)
(set! (-> (the-as (pointer int64) a0-40)) sv-48)
(let ((a1-49 71))
(s.d! (+ a0-40 8) a1-49)
)
(set! (-> v1-96 base) (&+ a0-40 16))
)
)
(let* ((v1-97 s2-2)
(a0-42 (-> v1-97 base))
)
@@ -869,34 +842,16 @@
(v1-168 (-> *display* frames (-> *display* on-screen) global-buf))
(a2-70 (-> v1-168 base))
)
(let* ((a0-68 v1-168)
(a1-84 (-> a0-68 base))
)
(set! (-> (the-as (pointer int64) a1-84)) #x10000002)
(s.w! (+ a1-84 8) 0)
(let ((a3-35 #x50000002))
(s.w! (+ a1-84 12) a3-35)
)
(set! (-> a0-68 base) (&+ a1-84 16))
)
(let* ((a0-69 v1-168)
(a1-86 (-> a0-69 base))
)
(set! (-> (the-as (pointer uint64) a1-86)) (make-u128 0 (the-as uint #x1000000000008001)))
(let ((a3-38 (the-as uint #xeeeeeeeeeeeeeeee)))
(s.d! (+ a1-86 8) a3-38)
)
(set! (-> a0-69 base) (&+ a1-86 16))
)
(let* ((a0-70 v1-168)
(a1-88 (-> a0-70 base))
)
(set! (-> (the-as (pointer int64) a1-88)) #x5180b)
(let ((a3-40 71))
(s.d! (+ a1-88 8) a3-40)
)
(set! (-> a0-70 base) (&+ a1-88 16))
)
(dma-buffer-add-gs-set v1-168 (test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x80
:afail #x1
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
)
(let ((a0-71 (-> v1-168 base)))
(while (nonzero? proto-array-len)
(+! proto-array-len -1)
+100 -365
View File
@@ -309,56 +309,32 @@
(rlet ((vf23 :class vf)
(vf27 :class vf)
)
(let* ((v1-0 arg0)
(a0-1 (the-as dma-packet (-> v1-0 base)))
)
(set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt)))
(set! (-> a0-1 vif0) (new 'static 'vif-tag))
(set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ a0-1 16)))
)
(let* ((v1-1 arg0)
(a0-3 (the-as gs-gif-tag (-> v1-1 base)))
)
(set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6))
(set! (-> a0-3 regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (the-as pointer (&+ a0-3 16)))
)
(let* ((s4-0 arg0)
(s3-0 (-> s4-0 base))
)
(set! (-> (the-as (pointer gs-test) s3-0) 0) (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x50
:afail #x1
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(set! (-> (the-as (pointer gs-reg64) s3-0) 1) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-tex0) s3-0) 2) (new 'static 'gs-tex0
:tbp0 #x100
:tbw #x2
:psm #x1b
:tcc #x1
:cbp #x300
:cld #x1
:th (log2 128)
:tw (log2 128)
)
)
(set! (-> (the-as (pointer gs-reg64) s3-0) 3) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) s3-0) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) s3-0) 5) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-clamp) s3-0) 6) (new 'static 'gs-clamp))
(set! (-> (the-as (pointer gs-reg64) s3-0) 7) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-alpha) s3-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) s3-0) 9) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer uint64) s3-0) 10) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) s3-0) 11) (gs-reg64 texflush))
(set! (-> s4-0 base) (&+ s3-0 96))
)
(dma-buffer-add-gs-set arg0
(test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x50
:afail #x1
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(tex0-1 (new 'static 'gs-tex0
:tbp0 #x100
:tbw #x2
:psm #x1b
:tcc #x1
:cbp #x300
:cld #x1
:th (log2 128)
:tw (log2 128)
)
)
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(clamp-1 (new 'static 'gs-clamp))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(texflush 0)
)
(.lvf vf27 (&-> obj giftag-roof quad))
(let ((v1-18 #x43c80000))
(.mov vf23 v1-18)
@@ -495,28 +471,7 @@
(defmethod draw-haze sky-work ((obj sky-work) (arg0 dma-buffer))
(local-vars (sv-16 haze-vert-array) (sv-20 (inline-array sky-vertex)))
(rlet ((vf27 :class vf))
(let* ((v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16)))
)
(let* ((v1-1 arg0)
(a0-3 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16))
)
(let* ((v1-2 arg0)
(a0-5 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1))
(set! (-> v1-2 base) (&+ a0-5 16))
)
(dma-buffer-add-gs-set arg0 (alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1)))
(init-regs-for-large-polygon-draw obj)
(.lvf vf27 (&-> obj giftag-haze quad))
(let ((s4-0 (the-as object (-> arg0 base))))
@@ -593,34 +548,11 @@
;; WARN: Return type mismatch int vs none.
(defmethod draw-roof sky-work ((obj sky-work) (arg0 dma-buffer))
(rlet ((vf27 :class vf))
(let* ((v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ (the-as dma-packet a0-1) 16)))
)
(let* ((v1-1 arg0)
(a0-3 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16))
)
(let* ((v1-2 arg0)
(a0-5 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-zbuf) a0-5) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) a0-5) 2)
(new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) a0-5) 4) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 alpha-1))
(set! (-> v1-2 base) (&+ a0-5 48))
)
(dma-buffer-add-gs-set arg0
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
)
(init-regs-for-large-polygon-draw obj)
(.lvf vf27 (&-> obj giftag-base quad))
(let ((s5-1 (the-as object (-> arg0 base))))
@@ -645,30 +577,9 @@
;; WARN: Return type mismatch int vs none.
(defmethod draw-base sky-work ((obj sky-work) (arg0 dma-buffer))
(rlet ((vf27 :class vf))
(let* ((v1-0 arg0)
(a1-1 (the-as dma-packet (-> v1-0 base)))
)
(set! (-> a1-1 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a1-1 vif0) (new 'static 'vif-tag))
(set! (-> a1-1 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ a1-1 16)))
)
(let* ((v1-1 arg0)
(a1-3 (the-as gs-gif-tag (-> v1-1 base)))
)
(set! (-> a1-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a1-3 regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (the-as pointer (&+ a1-3 16)))
)
(let* ((v1-2 arg0)
(a1-5 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-test) a1-5) 0)
(new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a1-5) 1) (gs-reg64 test-1))
(set! (-> v1-2 base) (&+ a1-5 16))
)
(dma-buffer-add-gs-set arg0
(test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)))
)
(let ((s5-0 (the-as object (-> arg0 base))))
(&+! (-> arg0 base) 16)
(.lvf vf27 (&-> obj giftag-base quad))
@@ -693,61 +604,34 @@
;; WARN: Return type mismatch int vs none.
(defmethod draw-fog sky-work ((obj sky-work) (arg0 dma-buffer))
(let ((s4-0 (-> *sky-texture-anim-array* array-data 8 tex)))
(when s4-0
(let* ((v1-3 arg0)
(a0-1 (the-as dma-packet (-> v1-3 base)))
)
(set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
(set! (-> a0-1 vif0) (new 'static 'vif-tag))
(set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-3 base) (the-as pointer (&+ a0-1 16)))
(if s4-0
(dma-buffer-add-gs-set arg0
(tex0-1 (new 'static 'gs-tex0
:tcc #x1
:cld #x1
:psm (the-as int (-> s4-0 psm))
:cpsm (-> s4-0 clutpsm)
:cbp (-> s4-0 clutdest)
:th (log2 (-> s4-0 h))
:tw (log2 (-> s4-0 w))
:tbw (-> s4-0 width 0)
:tbp0 (-> s4-0 dest 0)
)
)
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x70
:afail #x3
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
)
)
(let* ((v1-4 arg0)
(a0-3 (the-as gs-gif-tag (-> v1-4 base)))
)
(set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5))
(set! (-> a0-3 regs) GIF_REGS_ALL_AD)
(set! (-> v1-4 base) (the-as pointer (the-as gs-gif-tag (&+ a0-3 16))))
)
(let* ((s3-0 arg0)
(s2-0 (-> s3-0 base))
)
(set! (-> (the-as (pointer gs-tex0) s2-0) 0)
(new 'static 'gs-tex0
:tcc #x1
:cld #x1
:psm (the-as int (-> s4-0 psm))
:cpsm (-> s4-0 clutpsm)
:cbp (-> s4-0 clutdest)
:th (log2 (-> s4-0 h))
:tw (log2 (-> s4-0 w))
:tbw (-> s4-0 width 0)
:tbp0 (-> s4-0 dest 0)
)
)
(set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) s2-0) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-test) s2-0) 4)
(new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x70
:afail #x3
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-clamp) s2-0) 6)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-alpha) s2-0) 8) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 alpha-1))
(set! (-> s3-0 base) (&+ s2-0 80))
)
)
)
(let* ((v1-26 (the-as (inline-array qword) (-> arg0 base)))
(f0-0 (-> *fog-texture-work* min-corner y))
@@ -814,9 +698,9 @@
(if (nonzero? (-> (the-as sky-work s4-0) star-colors 0 x))
(stars-transform-asm (the-as sky-work s4-0))
)
(let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s5-1 (-> s3-0 base))
)
(with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id sky-draw)
)
(draw-roof (the-as sky-work s4-0) s3-0)
(init-regs-for-sky-asm (the-as sky-work s4-0))
(if (nonzero? (-> (the-as sky-work s4-0) star-colors 0 x))
@@ -829,20 +713,6 @@
(draw-clouds (the-as sky-work s4-0) s3-0)
(draw-base (the-as sky-work s4-0) s3-0)
(draw-fog (the-as sky-work s4-0) s3-0)
(let ((a3-5 (-> s3-0 base)))
(let ((v1-45 (the-as dma-packet (-> s3-0 base))))
(set! (-> v1-45 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-45 vif0) (new 'static 'vif-tag))
(set! (-> v1-45 vif1) (new 'static 'vif-tag))
(set! (-> s3-0 base) (the-as pointer (&+ v1-45 16)))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) bucket-group)
(bucket-id sky-draw)
s5-1
(the-as (pointer dma-tag) a3-5)
)
)
)
)
(let ((v1-52 *dma-mem-usage*))
@@ -859,52 +729,21 @@
)
)
(else
(let* ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf))
(gp-1 (-> s4-1 base))
)
(with-dma-buffer-add-bucket ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id sky-draw)
)
(cond
((-> *blit-displays-work* menu-mode)
(let ((f0-0 (-> *blit-displays-work* progress-interp)))
(let* ((a0-43 s4-1)
(a1-30 (the-as dma-packet (-> a0-43 base)))
)
(set! (-> a1-30 dma) (new 'static 'dma-tag :qwc #x8 :id (dma-tag-id cnt)))
(set! (-> a1-30 vif0) (new 'static 'vif-tag))
(set! (-> a1-30 vif1) (new 'static 'vif-tag :imm #x8 :cmd (vif-cmd direct) :msk #x1))
(set! (-> a0-43 base) (the-as pointer (&+ a1-30 16)))
)
(let* ((a0-44 s4-1)
(a1-32 (the-as gs-gif-tag (-> a0-44 base)))
)
(set! (-> a1-32 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x7))
(set! (-> a1-32 regs) GIF_REGS_ALL_AD)
(set! (-> a0-44 base) (the-as pointer (&+ a1-32 16)))
)
(let* ((a0-45 s4-1)
(a1-34 (-> a0-45 base))
)
(set! (-> (the-as (pointer gs-zbuf) a1-34) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(set! (-> (the-as (pointer gs-reg64) a1-34) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) a1-34) 2)
(new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a1-34) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) a1-34) 4) (new 'static 'gs-alpha))
(set! (-> (the-as (pointer gs-reg64) a1-34) 5) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-tex0) a1-34) 6)
(new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)
)
(set! (-> (the-as (pointer gs-reg64) a1-34) 7) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) a1-34) 8) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) a1-34) 9) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-clamp) a1-34) 10)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) a1-34) 11) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer uint64) a1-34) 12) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) a1-34) 13) (gs-reg64 texflush))
(set! (-> a0-45 base) (&+ a1-34 112))
)
(dma-buffer-add-gs-set s4-1
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)))
(alpha-1 (new 'static 'gs-alpha))
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1))
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(texflush 0)
)
(let ((a2-40 (the-as (inline-array qword) (-> s4-1 base)))
(a3-7 #x7000)
(t0-1 #x7300)
@@ -934,34 +773,11 @@
(set-vector! (-> t0-4 5 vector4w) 8200 6664 0 0)
(set-vector! (-> t0-4 6 vector4w) a0-49 a1-37 0 0)
(&+! (-> s4-1 base) 112)
(let* ((t0-8 s4-1)
(t1-11 (the-as dma-packet (-> t0-8 base)))
)
(set! (-> t1-11 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> t1-11 vif0) (new 'static 'vif-tag))
(set! (-> t1-11 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> t0-8 base) (the-as pointer (&+ t1-11 16)))
)
(let* ((t0-9 s4-1)
(t1-13 (the-as gs-gif-tag (-> t0-9 base)))
)
(set! (-> t1-13 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> t1-13 regs) GIF_REGS_ALL_AD)
(set! (-> t0-9 base) (the-as pointer (&+ t1-13 16)))
)
(let* ((t0-10 s4-1)
(t1-15 (-> t0-10 base))
)
(set! (-> (the-as (pointer gs-alpha) t1-15) 0) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) t1-15) 1) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-tex0) t1-15) 2)
(new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)
)
(set! (-> (the-as (pointer gs-reg64) t1-15) 3) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer uint64) t1-15) 4) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) t1-15) 5) (gs-reg64 texflush))
(set! (-> t0-10 base) (&+ t1-15 48))
)
(dma-buffer-add-gs-set s4-1
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9 :tcc #x1))
(texflush 0)
)
(let ((t0-11 (the-as (inline-array qword) (-> s4-1 base))))
(set! (-> t0-11 0 quad) (-> obj draw-tmpl2 dma-vif quad))
(set! (-> t0-11 1 quad) (-> obj draw-tmpl2 quad 1))
@@ -973,28 +789,7 @@
)
)
(&+! (-> s4-1 base) 112)
(let* ((a0-52 s4-1)
(a1-38 (the-as dma-packet (-> a0-52 base)))
)
(set! (-> a1-38 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a1-38 vif0) (new 'static 'vif-tag))
(set! (-> a1-38 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> a0-52 base) (the-as pointer (&+ a1-38 16)))
)
(let* ((a0-53 s4-1)
(a1-40 (the-as gs-gif-tag (-> a0-53 base)))
)
(set! (-> a1-40 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a1-40 regs) GIF_REGS_ALL_AD)
(set! (-> a0-53 base) (the-as pointer (&+ a1-40 16)))
)
(let* ((a0-54 s4-1)
(a1-42 (-> a0-54 base))
)
(set! (-> (the-as (pointer gs-alpha) a1-42) 0) (new 'static 'gs-alpha))
(set! (-> (the-as (pointer gs-reg64) a1-42) 1) (gs-reg64 alpha-1))
(set! (-> a0-54 base) (&+ a1-42 16))
)
(dma-buffer-add-gs-set s4-1 (alpha-1 (new 'static 'gs-alpha)))
(let ((a0-57 (the int (+ 128.0 (* 32.0 f0-0))))
(a1-46 (the int (- 128.0 (* 16.0 f0-0))))
(a2-55 (the int (- 128.0 (* 96.0 f0-0))))
@@ -1027,34 +822,11 @@
(&+! (-> s4-1 base) 112)
)
)
(let* ((v1-60 s4-1)
(a3-17 (the-as dma-packet (-> v1-60 base)))
)
(set! (-> a3-17 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a3-17 vif0) (new 'static 'vif-tag))
(set! (-> a3-17 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-60 base) (the-as pointer (&+ a3-17 16)))
)
(let* ((v1-61 s4-1)
(a3-19 (the-as gs-gif-tag (-> v1-61 base)))
)
(set! (-> a3-19 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a3-19 regs) GIF_REGS_ALL_AD)
(set! (-> v1-61 base) (the-as pointer (&+ a3-19 16)))
)
(let* ((v1-62 s4-1)
(a3-21 (-> v1-62 base))
)
(set! (-> (the-as (pointer gs-alpha) a3-21) 0) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a3-21) 1) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-tex0) a3-21) 2)
(new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1)
)
(set! (-> (the-as (pointer gs-reg64) a3-21) 3) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer uint64) a3-21) 4) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) a3-21) 5) (gs-reg64 texflush))
(set! (-> v1-62 base) (&+ a3-21 48))
)
(dma-buffer-add-gs-set s4-1
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x4c0 :tbw #x8 :tw #x9 :th #x9 :tcc #x1))
(texflush 0)
)
(let ((v1-63 (the-as (inline-array qword) (-> s4-1 base))))
(set! (-> v1-63 0 quad) (-> obj draw-tmpl2 dma-vif quad))
(set! (-> v1-63 1 quad) (-> obj draw-tmpl2 quad 1))
@@ -1074,41 +846,18 @@
)
)
(else
(let* ((a0-66 s4-1)
(a1-53 (the-as dma-packet (-> a0-66 base)))
)
(set! (-> a1-53 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a1-53 vif0) (new 'static 'vif-tag))
(set! (-> a1-53 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> a0-66 base) (the-as pointer (&+ a1-53 16)))
)
(let* ((a0-67 s4-1)
(a1-55 (the-as gs-gif-tag (-> a0-67 base)))
)
(set! (-> a1-55 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a1-55 regs) GIF_REGS_ALL_AD)
(set! (-> a0-67 base) (the-as pointer (&+ a1-55 16)))
)
(let* ((a0-68 s4-1)
(a1-57 (-> a0-68 base))
)
(set! (-> (the-as (pointer gs-zbuf) a1-57) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(set! (-> (the-as (pointer gs-reg64) a1-57) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) a1-57) 2)
(new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a1-57) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-rgbaq) a1-57) 4) (new 'static 'gs-rgbaq
:q 1.0
:a (the int (-> v1-0 current-fog erase-color w))
:b (the int (-> v1-0 current-fog erase-color z))
:g (the int (-> v1-0 current-fog erase-color y))
:r (the int (-> v1-0 current-fog erase-color x))
)
)
(set! (-> (the-as (pointer gs-reg64) a1-57) 5) (gs-reg64 rgbaq))
(set! (-> a0-68 base) (&+ a1-57 48))
)
(dma-buffer-add-gs-set s4-1
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)))
(rgbaq (new 'static 'gs-rgbaq
:q 1.0
:a (the int (-> v1-0 current-fog erase-color w))
:b (the int (-> v1-0 current-fog erase-color z))
:g (the int (-> v1-0 current-fog erase-color y))
:r (the int (-> v1-0 current-fog erase-color x))
)
)
)
(let ((v1-78 (the-as (inline-array qword) (-> s4-1 base))))
(set! (-> v1-78 0 quad) (-> obj sprite-tmpl dma-vif quad))
(set! (-> v1-78 1 quad) (-> obj sprite-tmpl quad 1))
@@ -1121,20 +870,6 @@
(&+! (-> s4-1 base) 32)
)
)
(let ((a3-35 (-> s4-1 base)))
(let ((v1-85 (the-as dma-packet (-> s4-1 base))))
(set! (-> v1-85 dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> v1-85 vif0) (new 'static 'vif-tag))
(set! (-> v1-85 vif1) (new 'static 'vif-tag))
(set! (-> s4-1 base) (the-as pointer (&+ v1-85 16)))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) bucket-group)
(bucket-id sky-draw)
gp-1
(the-as (pointer dma-tag) a3-35)
)
)
)
)
)
+15 -38
View File
@@ -121,45 +121,22 @@
;; definition for function sprite-init-distorter
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a1-0 8) 0) at op 4
(defun sprite-init-distorter ((dma-buff dma-buffer))
(let* ((v1-0 dma-buff)
(a1-0 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a1-0) dma) (new 'static 'dma-tag :qwc #x7 :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 #x7 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (&+ (the-as pointer a1-0) 16))
)
(let* ((v1-1 dma-buff)
(a1-2 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a1-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6))
(set! (-> (the-as gs-gif-tag a1-2) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a1-2) 16))
)
(let* ((v1-2 dma-buff)
(a1-4 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-zbuf) a1-4) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-tex0) a1-4) 2) (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9))
(set! (-> (the-as (pointer gs-reg64) a1-4) 3) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) a1-4) 4) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) a1-4) 5) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-miptbp) a1-4) 6) (new 'static 'gs-miptbp))
(set! (-> (the-as (pointer gs-reg64) a1-4) 7) (gs-reg64 miptbp1-1))
(set! (-> (the-as (pointer gs-clamp) a1-4) 8) (new 'static 'gs-clamp
:wms (gs-tex-wrap-mode region-clamp)
:wmt (gs-tex-wrap-mode region-clamp)
:maxu #x1ff
:maxv #x19f
)
)
(set! (-> (the-as (pointer gs-reg64) a1-4) 9) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-alpha) a1-4) 10) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a1-4) 11) (gs-reg64 alpha-1))
(set! (-> v1-2 base) (&+ a1-4 96))
)
(dma-buffer-add-gs-set dma-buff
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x3300 :tbw #x8 :tw #x9 :th #x9))
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(miptbp1-1 (new 'static 'gs-miptbp))
(clamp-1 (new 'static 'gs-clamp
:wms (gs-tex-wrap-mode region-clamp)
:wmt (gs-tex-wrap-mode region-clamp)
:maxu #x1ff
:maxv #x19f
)
)
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
)
(let* ((v1-3 dma-buff)
(a1-6 (the-as object (-> v1-3 base)))
)
+48 -71
View File
@@ -791,7 +791,7 @@
;; definition for function sprite-draw
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ v1-27 8) 0) at op 160
;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 35
(defun sprite-draw ((disp display))
(let ((dma-mem-begin (-> *display* frames (-> *display* on-screen) global-buf base)))
(with-dma-buffer-add-bucket ((dma-buff (-> *display* frames (-> *display* on-screen) global-buf))
@@ -801,90 +801,67 @@
(sprite-init-distorter dma-buff)
(sprite-draw-distorters dma-buff)
)
(let ((v1-17 dma-buff))
(let ((pkt1 (the-as dma-packet (-> v1-17 base))))
(set! (-> pkt1 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
(set! (-> pkt1 vif0) (new 'static 'vif-tag))
(set! (-> pkt1 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-17 base) (&+ (the-as pointer pkt1) 16))
)
)
(let ((v1-18 dma-buff))
(let ((giftag (the-as gs-gif-tag (-> v1-18 base))))
(set! (-> giftag tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
(set! (-> giftag regs) GIF_REGS_ALL_AD)
(set! (-> v1-18 base) (the-as pointer (&+ giftag 16)))
)
)
(let ((v1-19 dma-buff))
(let ((a0-10 (-> v1-19 base)))
(set! (-> (the-as (pointer gs-test) a0-10) 0)
(new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:afail #x1
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-clamp) a0-10) 2)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) a0-10) 3) (gs-reg64 clamp-1))
(set! (-> v1-19 base) (&+ a0-10 32))
)
)
(dma-buffer-add-gs-set dma-buff
(test-1 (new 'static 'gs-test
:ate #x1
:atst (gs-atest greater-equal)
:aref #x26
:afail #x1
:zte #x1
:ztst (gs-ztest greater-equal)
)
)
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
)
(dma-buffer-add-vu-function dma-buff sprite-vu1-block 1)
(sprite-add-frame-data dma-buff (the-as uint 408))
(let ((v1-20 dma-buff))
(let ((pkt2 (the-as dma-packet (-> v1-20 base))))
(set! (-> pkt2 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt2 vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm #x0))
(set! (-> pkt2 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-20 base) (&+ (the-as pointer pkt2) 16))
)
(let* ((v1-20 dma-buff)
(pkt2 (the-as dma-packet (-> v1-20 base)))
)
(set! (-> pkt2 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt2 vif0) (new 'static 'vif-tag :cmd (vif-cmd mscalf) :msk #x1 :imm #x0))
(set! (-> pkt2 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-20 base) (&+ (the-as pointer pkt2) 16))
)
(let ((v1-21 dma-buff))
(let ((pkt3 (the-as dma-packet (-> v1-21 base))))
(set! (-> pkt3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt3 vif0) (new 'static 'vif-tag :cmd (vif-cmd base)))
(set! (-> pkt3 vif1) (new 'static 'vif-tag :imm #x190 :cmd (vif-cmd offset)))
(set! (-> v1-21 base) (&+ (the-as pointer pkt3) 16))
)
(let* ((v1-21 dma-buff)
(pkt3 (the-as dma-packet (-> v1-21 base)))
)
(set! (-> pkt3 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt3 vif0) (new 'static 'vif-tag :cmd (vif-cmd base)))
(set! (-> pkt3 vif1) (new 'static 'vif-tag :imm #x190 :cmd (vif-cmd offset)))
(set! (-> v1-21 base) (&+ (the-as pointer pkt3) 16))
)
(sprite-add-matrix-data dma-buff (the-as uint 0))
(sprite-add-3d-all *sprite-array-3d* dma-buff 0)
(sprite-add-2d-all *sprite-array-2d* dma-buff 0)
(let ((v1-22 dma-buff))
(let ((pkt4 (the-as dma-packet (-> v1-22 base))))
(set! (-> pkt4 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt4 vif0) (new 'static 'vif-tag))
(set! (-> pkt4 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-22 base) (&+ (the-as pointer pkt4) 16))
)
(let* ((v1-22 dma-buff)
(pkt4 (the-as dma-packet (-> v1-22 base)))
)
(set! (-> pkt4 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt4 vif0) (new 'static 'vif-tag))
(set! (-> pkt4 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-22 base) (&+ (the-as pointer pkt4) 16))
)
(sprite-add-matrix-data dma-buff (the-as uint 1))
(sprite-add-2d-all *sprite-array-2d* dma-buff 1)
(let ((v1-23 dma-buff))
(let ((pkt5 (the-as dma-packet (-> v1-23 base))))
(set! (-> pkt5 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt5 vif0) (new 'static 'vif-tag))
(set! (-> pkt5 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-23 base) (&+ (the-as pointer pkt5) 16))
)
(let* ((v1-23 dma-buff)
(pkt5 (the-as dma-packet (-> v1-23 base)))
)
(set! (-> pkt5 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt5 vif0) (new 'static 'vif-tag))
(set! (-> pkt5 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-23 base) (&+ (the-as pointer pkt5) 16))
)
(sprite-glow-init-engine dma-buff)
(sprite-glow-draw dma-buff)
(draw-all-sprites! *simple-sprite-system* dma-buff)
(let ((v1-26 dma-buff))
(let ((pkt6 (the-as dma-packet (-> v1-26 base))))
(set! (-> pkt6 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt6 vif0) (new 'static 'vif-tag))
(set! (-> pkt6 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-26 base) (&+ (the-as pointer pkt6) 16))
)
(let* ((v1-26 dma-buff)
(pkt6 (the-as dma-packet (-> v1-26 base)))
)
(set! (-> pkt6 dma) (new 'static 'dma-tag :id (dma-tag-id cnt)))
(set! (-> pkt6 vif0) (new 'static 'vif-tag))
(set! (-> pkt6 vif1) (new 'static 'vif-tag :cmd (vif-cmd flushe) :msk #x1))
(set! (-> v1-26 base) (&+ (the-as pointer pkt6) 16))
)
)
(let ((mem-use *dma-mem-usage*))
+62 -228
View File
@@ -682,37 +682,16 @@
;; definition for function upload-vram-data
;; WARN: Return type mismatch symbol vs none.
;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 13
(defun upload-vram-data ((buf dma-buffer) (dest int) (data pointer) (height int) (width int))
(while (> height 0)
(let ((height-this-time (min 2048 height)))
(let* ((v1-1 buf)
(a0-1 (the-as dma-packet (-> v1-1 base)))
)
(set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt)))
(set! (-> a0-1 vif0) (new 'static 'vif-tag))
(set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-1 base) (the-as pointer (&+ a0-1 16)))
)
(let* ((v1-2 buf)
(a0-3 (the-as gs-gif-tag (-> v1-2 base)))
)
(set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4))
(set! (-> a0-3 regs) GIF_REGS_ALL_AD)
(set! (-> v1-2 base) (the-as pointer (&+ a0-3 16)))
)
(let* ((v1-3 buf)
(a0-5 (-> v1-3 base))
)
(set! (-> (the-as (pointer gs-bitbltbuf) a0-5) 0) (new 'static 'gs-bitbltbuf :dbw (/ width 64) :dbp dest))
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 bitbltbuf))
(set! (-> (the-as (pointer gs-trxpos) a0-5) 2) (new 'static 'gs-trxpos))
(set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 trxpos))
(set! (-> (the-as (pointer gs-trxreg) a0-5) 4) (new 'static 'gs-trxreg :rrw width :rrh height-this-time))
(set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 trxreg))
(set! (-> (the-as (pointer gs-trxdir) a0-5) 6) (new 'static 'gs-trxdir))
(set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 trxdir))
(set! (-> v1-3 base) (&+ a0-5 64))
)
(dma-buffer-add-gs-set buf
(bitbltbuf (new 'static 'gs-bitbltbuf :dbw (/ width 64) :dbp dest))
(trxpos (new 'static 'gs-trxpos))
(trxreg (new 'static 'gs-trxreg :rrw width :rrh height-this-time))
(trxdir (new 'static 'gs-trxdir))
)
(dma-buffer-add-ref-texture buf data width height-this-time (gs-psm ct32))
)
(+! dest 4096)
@@ -723,8 +702,7 @@
)
;; definition for function upload-vram-pages
;; WARN: Failed store: (s.w! (+ v1-54 8) 0) at op 169
;; WARN: Failed store: (s.w! (+ v1-54 12) 0) at op 170
;; ERROR: Failed store: (s.w! (+ a0-24 8) 0) at op 143
(defun upload-vram-pages ((pool texture-pool)
(dest-seg texture-pool-segment)
(tpage texture-page)
@@ -810,28 +788,7 @@
)
(+! num-chunks chunks-pending)
)
(let ((v1-51 dma-buf))
(let ((a0-24 (the-as dma-packet (-> v1-51 base))))
(set! (-> a0-24 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-24 vif0) (new 'static 'vif-tag))
(set! (-> a0-24 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-51 base) (the-as pointer (&+ a0-24 16)))
)
)
(let ((v1-52 dma-buf))
(let ((a0-26 (the-as gs-gif-tag (-> v1-52 base))))
(set! (-> a0-26 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-26 regs) GIF_REGS_ALL_AD)
(set! (-> v1-52 base) (the-as pointer (&+ a0-26 16)))
)
)
(let ((v1-53 dma-buf))
(let ((a0-28 (-> v1-53 base)))
(set! (-> (the-as (pointer int64) a0-28) 0) 1)
(set! (-> (the-as (pointer gs-reg64) a0-28) 1) (gs-reg64 texflush))
(set! (-> v1-53 base) (&+ a0-28 16))
)
)
(dma-buffer-add-gs-set dma-buf (texflush 1))
)
(shl num-chunks 14)
)
@@ -891,8 +848,7 @@
)
;; definition for function upload-vram-pages-pris
;; WARN: Failed store: (s.w! (+ v1-43 8) 0) at op 163
;; WARN: Failed store: (s.w! (+ v1-43 12) 0) at op 164
;; ERROR: Failed store: (s.w! (+ a0-27 8) 0) at op 137
(defun upload-vram-pages-pris ((pool texture-pool)
(dest-seg texture-pool-segment)
(tpage texture-page)
@@ -964,28 +920,7 @@
)
(+! total-chunks-uploaded chunks-pending)
)
(let ((v1-40 dma-buf))
(let ((a0-27 (the-as dma-packet (-> v1-40 base))))
(set! (-> a0-27 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-27 vif0) (new 'static 'vif-tag))
(set! (-> a0-27 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-40 base) (the-as pointer (&+ a0-27 16)))
)
)
(let ((v1-41 dma-buf))
(let ((a0-29 (the-as gs-gif-tag (-> v1-41 base))))
(set! (-> a0-29 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-29 regs) GIF_REGS_ALL_AD)
(set! (-> v1-41 base) (the-as pointer (&+ a0-29 16)))
)
)
(let ((v1-42 dma-buf))
(let ((a0-31 (-> v1-42 base)))
(set! (-> (the-as (pointer int64) a0-31) 0) 1)
(set! (-> (the-as (pointer gs-reg64) a0-31) 1) (gs-reg64 texflush))
(set! (-> v1-42 base) (&+ a0-31 16))
)
)
(dma-buffer-add-gs-set dma-buf (texflush 1))
)
(shl total-chunks-uploaded 14)
)
@@ -1474,6 +1409,7 @@
;; definition for method 13 of type texture-page
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 19
(defmethod upload-now! texture-page ((obj texture-page) (arg0 tex-upload-mode))
(let ((gp-0 *txt-dma-list*))
(let ((v1-0 gp-0))
@@ -1481,28 +1417,7 @@
(set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length)))
)
(add-to-dma-buffer obj gp-0 arg0)
(let* ((v1-3 gp-0)
(a0-1 (the-as dma-packet (-> v1-3 base)))
)
(set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-1 vif0) (new 'static 'vif-tag))
(set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-3 base) (the-as pointer (&+ a0-1 16)))
)
(let* ((v1-4 gp-0)
(a0-3 (the-as gs-gif-tag (-> v1-4 base)))
)
(set! (-> a0-3 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-3 regs) GIF_REGS_ALL_AD)
(set! (-> v1-4 base) (the-as pointer (&+ a0-3 16)))
)
(let* ((v1-5 gp-0)
(a0-5 (-> v1-5 base))
)
(set! (-> (the-as (pointer int64) a0-5) 0) 1)
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 texflush))
(set! (-> v1-5 base) (&+ a0-5 16))
)
(dma-buffer-add-gs-set gp-0 (texflush 1))
(let* ((v1-6 gp-0)
(a0-7 (the-as object (-> v1-6 base)))
)
@@ -1547,47 +1462,26 @@
)
;; definition for function texture-relocate
;; ERROR: Failed store: (s.w! (+ t4-0 8) 0) at op 18
(defun texture-relocate ((dma-buff dma-buffer) (tex texture) (dest-loc int) (dest-fmt gs-psm) (clut-dst int))
(dotimes (v1-0 (the-as int (-> tex num-mips)))
(let ((t1-1 (ash (-> tex w) (- v1-0)))
(t2-3 (ash (-> tex h) (- v1-0)))
)
(let* ((t3-2 dma-buff)
(t4-0 (the-as object (-> t3-2 base)))
)
(set! (-> (the-as dma-packet t4-0) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet t4-0) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet t4-0) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1))
(set! (-> t3-2 base) (&+ (the-as pointer t4-0) 16))
)
(let* ((t3-3 dma-buff)
(t4-2 (the-as object (-> t3-3 base)))
)
(set! (-> (the-as gs-gif-tag t4-2) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4))
(set! (-> (the-as gs-gif-tag t4-2) regs) GIF_REGS_ALL_AD)
(set! (-> t3-3 base) (&+ (the-as pointer t4-2) 16))
)
(let* ((t3-4 dma-buff)
(t4-4 (-> t3-4 base))
)
(set! (-> (the-as (pointer gs-bitbltbuf) t4-4) 0) (new 'static 'gs-bitbltbuf
:sbp (-> tex dest v1-0)
:sbw (-> tex width v1-0)
:spsm (the-as int (-> tex psm))
:dbp (/ dest-loc 64)
:dbw (-> tex width v1-0)
:dpsm (the-as int dest-fmt)
)
)
(set! (-> (the-as (pointer gs-reg64) t4-4) 1) (gs-reg64 bitbltbuf))
(set! (-> (the-as (pointer gs-trxpos) t4-4) 2) (new 'static 'gs-trxpos))
(set! (-> (the-as (pointer gs-reg64) t4-4) 3) (gs-reg64 trxpos))
(set! (-> (the-as (pointer gs-trxreg) t4-4) 4) (new 'static 'gs-trxreg :rrw t1-1 :rrh t2-3))
(set! (-> (the-as (pointer gs-reg64) t4-4) 5) (gs-reg64 trxreg))
(set! (-> (the-as (pointer gs-trxdir) t4-4) 6) (new 'static 'gs-trxdir :xdir #x2))
(set! (-> (the-as (pointer gs-reg64) t4-4) 7) (gs-reg64 trxdir))
(set! (-> t3-4 base) (&+ t4-4 64))
)
(dma-buffer-add-gs-set dma-buff
(bitbltbuf (new 'static 'gs-bitbltbuf
:sbp (-> tex dest v1-0)
:sbw (-> tex width v1-0)
:spsm (the-as int (-> tex psm))
:dbp (/ dest-loc 64)
:dbw (-> tex width v1-0)
:dpsm (the-as int dest-fmt)
)
)
(trxpos (new 'static 'gs-trxpos))
(trxreg (new 'static 'gs-trxreg :rrw t1-1 :rrh t2-3))
(trxdir (new 'static 'gs-trxdir :xdir #x2))
)
)
(set! (-> tex dest v1-0) (the-as uint (/ dest-loc 64)))
)
@@ -1595,81 +1489,37 @@
((< clut-dst 0)
)
((= (-> tex psm) (gs-psm mt4))
(let* ((v1-7 dma-buff)
(a2-2 (the-as object (-> v1-7 base)))
)
(set! (-> (the-as dma-packet a2-2) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a2-2) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a2-2) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-7 base) (&+ (the-as pointer a2-2) 16))
)
(let* ((v1-8 dma-buff)
(a2-4 (the-as object (-> v1-8 base)))
)
(set! (-> (the-as gs-gif-tag a2-4) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4))
(set! (-> (the-as gs-gif-tag a2-4) regs) GIF_REGS_ALL_AD)
(set! (-> v1-8 base) (&+ (the-as pointer a2-4) 16))
)
(let* ((v1-9 dma-buff)
(a2-6 (-> v1-9 base))
)
(set! (-> (the-as (pointer gs-bitbltbuf) a2-6) 0) (new 'static 'gs-bitbltbuf
:sbw #x1
:dbw #x1
:dpsm (-> tex clutpsm)
:dbp (/ clut-dst 64)
:spsm (-> tex clutpsm)
:sbp (-> tex clutdest)
)
)
(set! (-> (the-as (pointer gs-reg64) a2-6) 1) (gs-reg64 bitbltbuf))
(set! (-> (the-as (pointer gs-trxpos) a2-6) 2) (new 'static 'gs-trxpos))
(set! (-> (the-as (pointer gs-reg64) a2-6) 3) (gs-reg64 trxpos))
(set! (-> (the-as (pointer gs-trxreg) a2-6) 4) (new 'static 'gs-trxreg :rrw #x8 :rrh #x2))
(set! (-> (the-as (pointer gs-reg64) a2-6) 5) (gs-reg64 trxreg))
(set! (-> (the-as (pointer gs-trxdir) a2-6) 6) (new 'static 'gs-trxdir :xdir #x2))
(set! (-> (the-as (pointer gs-reg64) a2-6) 7) (gs-reg64 trxdir))
(set! (-> v1-9 base) (&+ a2-6 64))
)
(dma-buffer-add-gs-set dma-buff
(bitbltbuf (new 'static 'gs-bitbltbuf
:sbw #x1
:dbw #x1
:dpsm (-> tex clutpsm)
:dbp (/ clut-dst 64)
:spsm (-> tex clutpsm)
:sbp (-> tex clutdest)
)
)
(trxpos (new 'static 'gs-trxpos))
(trxreg (new 'static 'gs-trxreg :rrw #x8 :rrh #x2))
(trxdir (new 'static 'gs-trxdir :xdir #x2))
)
(set! (-> tex clutdest) (the-as uint (/ clut-dst 64)))
)
((= (-> tex psm) (gs-psm mt8))
(let* ((v1-13 dma-buff)
(a2-9 (the-as object (-> v1-13 base)))
)
(set! (-> (the-as dma-packet a2-9) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a2-9) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a2-9) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-13 base) (&+ (the-as pointer a2-9) 16))
)
(let* ((v1-14 dma-buff)
(a2-11 (the-as object (-> v1-14 base)))
)
(set! (-> (the-as gs-gif-tag a2-11) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4))
(set! (-> (the-as gs-gif-tag a2-11) regs) GIF_REGS_ALL_AD)
(set! (-> v1-14 base) (&+ (the-as pointer a2-11) 16))
)
(let* ((v1-15 dma-buff)
(a2-13 (-> v1-15 base))
)
(set! (-> (the-as (pointer gs-bitbltbuf) a2-13) 0) (new 'static 'gs-bitbltbuf
:sbw #x2
:dbw #x2
:dpsm (-> tex clutpsm)
:dbp (/ clut-dst 64)
:spsm (-> tex clutpsm)
:sbp (-> tex clutdest)
)
)
(set! (-> (the-as (pointer gs-reg64) a2-13) 1) (gs-reg64 bitbltbuf))
(set! (-> (the-as (pointer gs-trxpos) a2-13) 2) (new 'static 'gs-trxpos))
(set! (-> (the-as (pointer gs-reg64) a2-13) 3) (gs-reg64 trxpos))
(set! (-> (the-as (pointer gs-trxreg) a2-13) 4) (new 'static 'gs-trxreg :rrw #x10 :rrh #x10))
(set! (-> (the-as (pointer gs-reg64) a2-13) 5) (gs-reg64 trxreg))
(set! (-> (the-as (pointer gs-trxdir) a2-13) 6) (new 'static 'gs-trxdir :xdir #x2))
(set! (-> (the-as (pointer gs-reg64) a2-13) 7) (gs-reg64 trxdir))
(set! (-> v1-15 base) (&+ a2-13 64))
)
(dma-buffer-add-gs-set dma-buff
(bitbltbuf (new 'static 'gs-bitbltbuf
:sbw #x2
:dbw #x2
:dpsm (-> tex clutpsm)
:dbp (/ clut-dst 64)
:spsm (-> tex clutpsm)
:sbp (-> tex clutdest)
)
)
(trxpos (new 'static 'gs-trxpos))
(trxreg (new 'static 'gs-trxreg :rrw #x10 :rrh #x10))
(trxdir (new 'static 'gs-trxdir :xdir #x2))
)
(set! (-> tex clutdest) (the-as uint (/ clut-dst 64)))
)
)
@@ -1701,6 +1551,7 @@
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Stack slot offset 16 signed mismatch
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-26 8) 0) at op 192
(defmethod setup-font-texture texture-pool ((obj texture-pool))
(local-vars (sv-16 int) (sv-20 int))
(let ((s3-0 (-> obj font-palette)))
@@ -1768,28 +1619,7 @@
(texture-relocate s4-0 s3-5 s2-5 (the-as gs-psm s1-5) -1)
(font-set-tex0 (the-as (pointer gs-tex0) (-> *font-work* large-font-3-tmpl)) s3-5 s2-5 s1-5 sv-20)
)
(let* ((v1-28 s4-0)
(a0-26 (the-as dma-packet (-> v1-28 base)))
)
(set! (-> a0-26 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-26 vif0) (new 'static 'vif-tag))
(set! (-> a0-26 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-28 base) (the-as pointer (&+ a0-26 16)))
)
(let* ((v1-29 s4-0)
(a0-28 (the-as gs-gif-tag (-> v1-29 base)))
)
(set! (-> a0-28 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-28 regs) GIF_REGS_ALL_AD)
(set! (-> v1-29 base) (the-as pointer (&+ a0-28 16)))
)
(let* ((v1-30 s4-0)
(a0-30 (-> v1-30 base))
)
(set! (-> (the-as (pointer int64) a0-30) 0) 1)
(set! (-> (the-as (pointer gs-reg64) a0-30) 1) (gs-reg64 texflush))
(set! (-> v1-30 base) (&+ a0-30 16))
)
(dma-buffer-add-gs-set s4-0 (texflush 1))
(let* ((v1-31 s4-0)
(a0-32 (the-as object (-> v1-31 base)))
)
@@ -2440,3 +2270,7 @@
;; definition for symbol *texture-pool*, type texture-pool
(define *texture-pool* (new 'global 'texture-pool))
+6 -26
View File
@@ -438,29 +438,9 @@
;; definition for function tie-end-buffer
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a1-0 8) 0) at op 4
(defun tie-end-buffer ((arg0 dma-buffer))
(let* ((v1-0 arg0)
(a1-0 (the-as dma-packet (-> v1-0 base)))
)
(set! (-> a1-0 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a1-0 vif0) (new 'static 'vif-tag))
(set! (-> a1-0 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ a1-0 16)))
)
(let* ((v1-1 arg0)
(a1-2 (the-as gs-gif-tag (-> v1-1 base)))
)
(set! (-> a1-2 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a1-2 regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (the-as pointer (&+ a1-2 16)))
)
(let* ((v1-2 arg0)
(a1-4 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-test) a1-4) 0) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
(set! (-> (the-as (pointer gs-reg64) a1-4) 1) (gs-reg64 test-1))
(set! (-> v1-2 base) (&+ a1-4 16))
)
(dma-buffer-add-gs-set arg0 (test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal))))
(let* ((v1-3 arg0)
(a1-6 (the-as dma-packet (-> v1-3 base)))
)
@@ -476,10 +456,10 @@
(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 int32) a0-1) 4) 0)
(set! (-> (the-as (pointer int32) a0-1) 5) 0)
(set! (-> (the-as (pointer int32) a0-1) 6) 0)
(set! (-> (the-as (pointer int32) a0-1) 7) 0)
(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-4 base) (&+ a0-1 32))
)
0
+28 -133
View File
@@ -746,6 +746,8 @@
;; definition for function draw-subtitle-image
;; INFO: Used lq/sq
;; WARN: Return type mismatch pointer vs none.
;; ERROR: Failed store: (s.w! (+ a0-7 8) 0) at op 45
(defun draw-subtitle-image ((arg0 subtitle-image) (arg1 font-context))
(local-vars (sv-16 pointer) (sv-32 int))
(let ((gp-0 (-> arg0 width))
@@ -756,41 +758,17 @@
(unpack-comp-rle (the-as (pointer int8) sv-16) (the-as (pointer int8) (-> arg0 data)))
(&+! (-> s4-0 base) (logand -16 (+ (shr (* gp-0 s5-0) 1) 15)))
)
(let* ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
(s4-1 (-> s3-0 base))
)
(with-dma-buffer-add-bucket ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id subtitle)
)
(upload-vram-data s3-0 0 (-> arg0 palette) 2 8)
(let ((s0-0 20))
(let* ((v1-13 s3-0)
(a0-7 (the-as object (-> v1-13 base)))
)
(set! (-> (the-as dma-packet a0-7) dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-7) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-7) vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-13 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a0-7) 16))))
)
(let* ((v1-14 s3-0)
(a0-9 (the-as gs-gif-tag (-> v1-14 base)))
)
(set! (-> a0-9 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4))
(set! (-> a0-9 regs) GIF_REGS_ALL_AD)
(set! (-> v1-14 base) (the-as pointer (&+ a0-9 16)))
)
(let* ((v1-15 s3-0)
(a0-11 (-> v1-15 base))
)
(set! (-> (the-as (pointer gs-bitbltbuf) a0-11) 0)
(new 'static 'gs-bitbltbuf :dbp #x1 :dbw (shr gp-0 6) :dpsm s0-0)
)
(set! (-> (the-as (pointer gs-reg64) a0-11) 1) (gs-reg64 bitbltbuf))
(set! (-> (the-as (pointer gs-trxpos) a0-11) 2) (new 'static 'gs-trxpos))
(set! (-> (the-as (pointer gs-reg64) a0-11) 3) (gs-reg64 trxpos))
(set! (-> (the-as (pointer gs-trxreg) a0-11) 4) (new 'static 'gs-trxreg :rrw gp-0 :rrh s5-0))
(set! (-> (the-as (pointer gs-reg64) a0-11) 5) (gs-reg64 trxreg))
(set! (-> (the-as (pointer gs-trxdir) a0-11) 6) (new 'static 'gs-trxdir))
(set! (-> (the-as (pointer gs-reg64) a0-11) 7) (gs-reg64 trxdir))
(set! (-> v1-15 base) (&+ a0-11 64))
)
(dma-buffer-add-gs-set s3-0
(bitbltbuf (new 'static 'gs-bitbltbuf :dbp #x1 :dbw (shr gp-0 6) :dpsm s0-0))
(trxpos (new 'static 'gs-trxpos))
(trxreg (new 'static 'gs-trxreg :rrw gp-0 :rrh s5-0))
(trxdir (new 'static 'gs-trxdir))
)
(let ((t9-2 dma-buffer-add-ref-texture)
(a0-13 s3-0)
(a2-8 gp-0)
@@ -801,44 +779,14 @@
)
(set! sv-32 (+ (log2 (the-as int (+ gp-0 -1))) 1))
(let ((v1-17 (+ (log2 (the-as int (+ s5-0 -1))) 1)))
(let* ((a0-16 s3-0)
(a1-23 (the-as object (-> a0-16 base)))
)
(set! (-> (the-as dma-packet a1-23) dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a1-23) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a1-23) vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1))
(set! (-> a0-16 base) (the-as pointer (the-as gs-gif-tag (&+ (the-as pointer a1-23) 16))))
)
(let* ((a0-17 s3-0)
(a1-25 (the-as object (-> a0-17 base)))
)
(set! (-> (the-as gs-gif-tag a1-25) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6))
(set! (-> (the-as gs-gif-tag a1-25) regs) GIF_REGS_ALL_AD)
(set! (-> a0-17 base) (&+ (the-as pointer a1-25) 16))
)
(let* ((a0-18 s3-0)
(a1-27 (-> a0-18 base))
)
(set! (-> (the-as (pointer gs-test) a1-27) 0)
(new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a1-27) 1) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) a1-27) 2) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a1-27) 3) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-tex0) a1-27) 4)
(new 'static 'gs-tex0 :tbp0 #x1 :tcc #x1 :cld #x1 :psm s0-0 :th v1-17 :tw sv-32 :tbw (shr gp-0 6))
)
(set! (-> (the-as (pointer gs-reg64) a1-27) 5) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) a1-27) 6) (new 'static 'gs-tex1))
(set! (-> (the-as (pointer gs-reg64) a1-27) 7) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-clamp) a1-27) 8)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) a1-27) 9) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer uint64) a1-27) 10) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) a1-27) 11) (gs-reg64 texflush))
(set! (-> a0-18 base) (&+ a1-27 96))
)
(dma-buffer-add-gs-set s3-0
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x1 :tcc #x1 :cld #x1 :psm s0-0 :th v1-17 :tw sv-32 :tbw (shr gp-0 6)))
(tex1-1 (new 'static 'gs-tex1))
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(texflush 0)
)
)
)
(let* ((v1-28 (-> s3-0 base))
@@ -852,30 +800,10 @@
(set! (-> (the-as (pointer uint128) v1-28) 0) (-> *subtitle-work* draw-tmpl dma-vif quad))
(set! (-> (the-as (pointer uint128) v1-28) 1) (-> *subtitle-work* draw-tmpl quad 1))
(set! (-> (the-as (pointer uint128) v1-28) 2) (-> *subtitle-work* color0 quad))
(let ((t0-8 (the-as gs-gif-tag (&+ v1-28 48))))
(set! (-> t0-8 word 0) (the-as uint 0))
(set! (-> t0-8 word 1) (the-as uint 0))
(set! (-> t0-8 word 2) (the-as uint 0))
(set! (-> t0-8 word 3) (the-as uint 0))
)
(let ((t0-9 (the-as object (&+ v1-28 64))))
(set! (-> (the-as gs-gif-tag t0-9) word 0) (* a2-23 16))
(set! (-> (the-as gs-gif-tag t0-9) word 1) (the-as uint (* a3-8 16)))
(set! (-> (the-as gs-gif-tag t0-9) word 2) (the-as uint 0))
(set! (-> (the-as gs-gif-tag t0-9) word 3) (the-as uint 0))
)
(let ((a2-26 (the-as object (&+ v1-28 80))))
(set! (-> (the-as gs-gif-tag a2-26) word 0) (* gp-0 16))
(set! (-> (the-as gs-gif-tag a2-26) word 1) (* s5-0 16))
(set! (-> (the-as gs-gif-tag a2-26) word 2) (the-as uint 0))
(set! (-> (the-as gs-gif-tag a2-26) word 3) (the-as uint 0))
)
(let ((v1-29 (the-as object (&+ v1-28 96))))
(set! (-> (the-as gs-gif-tag v1-29) word 0) (* a0-23 16))
(set! (-> (the-as gs-gif-tag v1-29) word 1) (the-as uint (* a1-33 16)))
(set! (-> (the-as gs-gif-tag v1-29) word 2) (the-as uint 0))
(set! (-> (the-as gs-gif-tag v1-29) word 3) (the-as uint 0))
)
(set-vector! (the-as vector4w (&+ v1-28 48)) 0 0 0 0)
(set-vector! (the-as vector4w (&+ v1-28 64)) (the-as int (* a2-23 16)) (* a3-8 16) 0 0)
(set-vector! (the-as vector4w (&+ v1-28 80)) (the-as int (* gp-0 16)) (the-as int (* s5-0 16)) 0 0)
(set-vector! (the-as vector4w (&+ v1-28 96)) (the-as int (* a0-23 16)) (* a1-33 16) 0 0)
)
(&+! (-> s3-0 base) 112)
(let* ((v1-32 (-> s3-0 base))
@@ -889,49 +817,16 @@
(set! (-> (the-as (pointer uint128) v1-32) 0) (-> *subtitle-work* draw-tmpl dma-vif quad))
(set! (-> (the-as (pointer uint128) v1-32) 1) (-> *subtitle-work* draw-tmpl quad 1))
(set! (-> (the-as (pointer uint128) v1-32) 2) (-> *subtitle-work* color1 quad))
(let ((t0-16 (the-as gs-gif-tag (&+ v1-32 48))))
(set! (-> t0-16 word 0) (the-as uint 0))
(set! (-> t0-16 word 1) (the-as uint 0))
(set! (-> t0-16 word 2) (the-as uint 0))
(set! (-> t0-16 word 3) (the-as uint 0))
)
(let ((t0-17 (the-as object (&+ v1-32 64))))
(set! (-> (the-as gs-gif-tag t0-17) word 0) (* a1-38 16))
(set! (-> (the-as gs-gif-tag t0-17) word 1) (the-as uint (* a3-11 16)))
(set! (-> (the-as gs-gif-tag t0-17) word 2) (the-as uint 0))
(set! (-> (the-as gs-gif-tag t0-17) word 3) (the-as uint 0))
)
(let ((a1-41 (the-as object (&+ v1-32 80))))
(set! (-> (the-as gs-gif-tag a1-41) word 0) (* gp-0 16))
(set! (-> (the-as gs-gif-tag a1-41) word 1) (* s5-0 16))
(set! (-> (the-as gs-gif-tag a1-41) word 2) (the-as uint 0))
(set! (-> (the-as gs-gif-tag a1-41) word 3) (the-as uint 0))
)
(let ((v1-33 (the-as object (&+ v1-32 96))))
(set! (-> (the-as gs-gif-tag v1-33) word 0) (* a0-30 16))
(set! (-> (the-as gs-gif-tag v1-33) word 1) (the-as uint (* a2-28 16)))
(set! (-> (the-as gs-gif-tag v1-33) word 2) (the-as uint 0))
(set! (-> (the-as gs-gif-tag v1-33) word 3) (the-as uint 0))
)
(set-vector! (the-as vector4w (&+ v1-32 48)) 0 0 0 0)
(set-vector! (the-as vector4w (&+ v1-32 64)) (the-as int (* a1-38 16)) (* a3-11 16) 0 0)
(set-vector! (the-as vector4w (&+ v1-32 80)) (the-as int (* gp-0 16)) (the-as int (* s5-0 16)) 0 0)
(set-vector! (the-as vector4w (&+ v1-32 96)) (the-as int (* a0-30 16)) (* a2-28 16) 0 0)
)
(&+! (-> s3-0 base) 112)
(set-dirty-mask! (-> *level* default-level) 8 (the-as int (* gp-0 s5-0)) 256)
(let ((a3-15 (-> s3-0 base)))
(let ((v1-37 (the-as object (-> s3-0 base))))
(set! (-> (the-as dma-packet v1-37) dma) (new 'static 'dma-tag :id (dma-tag-id next)))
(set! (-> (the-as dma-packet v1-37) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet v1-37) vif1) (new 'static 'vif-tag))
(set! (-> s3-0 base) (&+ (the-as pointer v1-37) 16))
)
(dma-bucket-insert-tag
(-> *display* frames (-> *display* on-screen) bucket-group)
(bucket-id subtitle)
s4-1
(the-as (pointer dma-tag) a3-15)
)
)
)
)
(none)
)
;; definition for function process-drawable-draw-subtitles
+1 -5
View File
@@ -242,7 +242,7 @@
(bigmap-method-19 (_type_) int 19)
(bigmap-method-20 (_type_) int 20)
(bigmap-method-21 (_type_ int int) int 21)
(bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int int) none 22)
(bigmap-method-22 (_type_ dma-buffer (pointer uint32) int int int gs-psm) none 22)
(bigmap-method-23 (_type_) none 23)
(bigmap-method-24 (_type_ dma-buffer) none 24)
(bigmap-method-25 (_type_ dma-buffer) none 25)
@@ -406,7 +406,3 @@
)
)
)
+46 -268
View File
@@ -226,40 +226,17 @@
;; definition for method 22 of type bigmap
;; WARN: Return type mismatch int vs none.
(defmethod bigmap-method-22 bigmap ((obj bigmap) (arg0 dma-buffer) (arg1 (pointer uint32)) (arg2 int) (arg3 int) (arg4 int) (arg5 int))
;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 5
(defmethod bigmap-method-22 bigmap ((obj bigmap) (arg0 dma-buffer) (arg1 (pointer uint32)) (arg2 int) (arg3 int) (arg4 int) (arg5 gs-psm))
(local-vars (sv-16 int))
(set! sv-16 arg2)
(let* ((v1-0 arg0)
(a0-1 (the-as dma-packet (-> v1-0 base)))
)
(set! (-> a0-1 dma) (new 'static 'dma-tag :qwc #x5 :id (dma-tag-id cnt)))
(set! (-> a0-1 vif0) (new 'static 'vif-tag))
(set! (-> a0-1 vif1) (new 'static 'vif-tag :imm #x5 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ a0-1 16)))
)
(let* ((v1-1 arg0)
(a0-3 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x4))
(set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16))
)
(let* ((v1-2 arg0)
(a0-5 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-bitbltbuf) a0-5) 0)
(new 'static 'gs-bitbltbuf :dpsm arg5 :dbp sv-16 :dbw (/ arg3 64))
)
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 bitbltbuf))
(set! (-> (the-as (pointer gs-trxpos) a0-5) 2) (new 'static 'gs-trxpos))
(set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 trxpos))
(set! (-> (the-as (pointer gs-trxreg) a0-5) 4) (new 'static 'gs-trxreg :rrw arg3 :rrh arg4))
(set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 trxreg))
(set! (-> (the-as (pointer gs-trxdir) a0-5) 6) (new 'static 'gs-trxdir))
(set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 trxdir))
(set! (-> v1-2 base) (&+ a0-5 64))
)
(dma-buffer-add-ref-texture arg0 arg1 arg3 arg4 (the-as gs-psm arg5))
(dma-buffer-add-gs-set arg0
(bitbltbuf (new 'static 'gs-bitbltbuf :dpsm (the-as int arg5) :dbp sv-16 :dbw (/ arg3 64)))
(trxpos (new 'static 'gs-trxpos))
(trxreg (new 'static 'gs-trxreg :rrw arg3 :rrh arg4))
(trxdir (new 'static 'gs-trxdir))
)
(dma-buffer-add-ref-texture arg0 arg1 arg3 arg4 arg5)
0
(none)
)
@@ -282,240 +259,68 @@
)
;; definition for method 24 of type bigmap
;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 22
(defmethod bigmap-method-24 bigmap ((obj bigmap) (arg0 dma-buffer))
(let ((s4-0 (the-as (pointer uint32) (-> obj bigmap-image art-group))))
(let ((v1-1 (-> s4-0 0))
(s3-0 (-> s4-0 1))
)
(bigmap-method-22 obj arg0 (+ (+ v1-1 16) (the-as uint s4-0)) 0 16 16 0)
(let* ((v1-4 arg0)
(a0-2 (the-as dma-packet (-> v1-4 base)))
)
(set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-2 vif0) (new 'static 'vif-tag))
(set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-4 base) (the-as pointer (&+ a0-2 16)))
)
(let* ((v1-5 arg0)
(a0-4 (the-as gs-gif-tag (-> v1-5 base)))
)
(set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-4 regs) GIF_REGS_ALL_AD)
(set! (-> v1-5 base) (the-as pointer (&+ a0-4 16)))
)
(let* ((v1-6 arg0)
(a0-6 (-> v1-6 base))
)
(set! (-> (the-as (pointer int64) a0-6) 0) 1)
(set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 texflush))
(set! (-> v1-6 base) (&+ a0-6 16))
)
(bigmap-method-22 obj arg0 (+ (+ s3-0 16) (the-as uint s4-0)) 8 512 208 19)
)
(let* ((v1-10 arg0)
(a0-9 (the-as dma-packet (-> v1-10 base)))
)
(set! (-> a0-9 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-9 vif0) (new 'static 'vif-tag))
(set! (-> a0-9 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-10 base) (the-as pointer (&+ a0-9 16)))
)
(let* ((v1-11 arg0)
(a0-11 (the-as gs-gif-tag (-> v1-11 base)))
)
(set! (-> a0-11 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-11 regs) GIF_REGS_ALL_AD)
(set! (-> v1-11 base) (the-as pointer (&+ a0-11 16)))
)
(let* ((v1-12 arg0)
(a0-13 (-> v1-12 base))
)
(set! (-> (the-as (pointer gs-tex0) a0-13) 0)
(new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1)
)
(set! (-> (the-as (pointer gs-reg64) a0-13) 1) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) a0-13) 2) (new 'static 'gs-tex1))
(set! (-> (the-as (pointer gs-reg64) a0-13) 3) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer int64) a0-13) 4) 1)
(set! (-> (the-as (pointer gs-reg64) a0-13) 5) (gs-reg64 texflush))
(set! (-> v1-12 base) (&+ a0-13 48))
(bigmap-method-22 obj arg0 (+ (+ v1-1 16) (the-as uint s4-0)) 0 16 16 (gs-psm ct32))
(dma-buffer-add-gs-set arg0 (texflush 1))
(bigmap-method-22 obj arg0 (+ (+ s3-0 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8))
)
(dma-buffer-add-gs-set arg0
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1))
(tex1-1 (new 'static 'gs-tex1))
(texflush 1)
)
(bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2))
(let ((v1-16 (+ #x1a000 (-> s4-0 1))))
(bigmap-method-22 obj arg0 (+ (+ v1-16 16) (the-as uint s4-0)) 8 512 208 19)
)
(let* ((v1-19 arg0)
(a0-18 (the-as dma-packet (-> v1-19 base)))
)
(set! (-> a0-18 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-18 vif0) (new 'static 'vif-tag))
(set! (-> a0-18 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-19 base) (the-as pointer (&+ a0-18 16)))
)
(let* ((v1-20 arg0)
(a0-20 (the-as gs-gif-tag (-> v1-20 base)))
)
(set! (-> a0-20 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-20 regs) GIF_REGS_ALL_AD)
(set! (-> v1-20 base) (the-as pointer (&+ a0-20 16)))
)
(let* ((v1-21 arg0)
(a0-22 (-> v1-21 base))
)
(set! (-> (the-as (pointer int64) a0-22) 0) 0)
(set! (-> (the-as (pointer gs-reg64) a0-22) 1) (gs-reg64 texflush))
(set! (-> v1-21 base) (&+ a0-22 16))
(bigmap-method-22 obj arg0 (+ (+ v1-16 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8))
)
(dma-buffer-add-gs-set arg0 (texflush 0))
(bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1))
(let ((v1-25 (+ (-> s4-0 0) 1024))
(s3-1 (+ #x34000 (-> s4-0 1)))
)
(bigmap-method-22 obj arg0 (+ (+ v1-25 16) (the-as uint s4-0)) 0 16 16 0)
(bigmap-method-22 obj arg0 (+ (+ s3-1 16) (the-as uint s4-0)) 8 512 208 19)
)
(let* ((v1-31 arg0)
(a0-28 (the-as dma-packet (-> v1-31 base)))
)
(set! (-> a0-28 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-28 vif0) (new 'static 'vif-tag))
(set! (-> a0-28 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-31 base) (the-as pointer (&+ a0-28 16)))
)
(let* ((v1-32 arg0)
(a0-30 (the-as gs-gif-tag (-> v1-32 base)))
)
(set! (-> a0-30 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-30 regs) GIF_REGS_ALL_AD)
(set! (-> v1-32 base) (the-as pointer (&+ a0-30 16)))
)
(let* ((v1-33 arg0)
(a0-32 (-> v1-33 base))
)
(set! (-> (the-as (pointer gs-tex0) a0-32) 0)
(new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :tcc #x1 :cld #x1)
)
(set! (-> (the-as (pointer gs-reg64) a0-32) 1) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) a0-32) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) a0-32) 3) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer int64) a0-32) 4) 1)
(set! (-> (the-as (pointer gs-reg64) a0-32) 5) (gs-reg64 texflush))
(set! (-> v1-33 base) (&+ a0-32 48))
(bigmap-method-22 obj arg0 (+ (+ v1-25 16) (the-as uint s4-0)) 0 16 16 (gs-psm ct32))
(bigmap-method-22 obj arg0 (+ (+ s3-1 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8))
)
(dma-buffer-add-gs-set arg0
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :tcc #x1 :cld #x1))
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(texflush 1)
)
(bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2))
(let ((v1-37 (+ #x4e000 (-> s4-0 1))))
(bigmap-method-22 obj arg0 (+ (+ v1-37 16) (the-as uint s4-0)) 8 512 208 19)
(bigmap-method-22 obj arg0 (+ (+ v1-37 16) (the-as uint s4-0)) 8 512 208 (gs-psm mt8))
)
)
(let* ((v1-40 arg0)
(a0-37 (the-as dma-packet (-> v1-40 base)))
)
(set! (-> a0-37 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-37 vif0) (new 'static 'vif-tag))
(set! (-> a0-37 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-40 base) (the-as pointer (&+ a0-37 16)))
)
(let* ((v1-41 arg0)
(a0-39 (the-as gs-gif-tag (-> v1-41 base)))
)
(set! (-> a0-39 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-39 regs) GIF_REGS_ALL_AD)
(set! (-> v1-41 base) (the-as pointer (&+ a0-39 16)))
)
(let* ((v1-42 arg0)
(a0-41 (-> v1-42 base))
)
(set! (-> (the-as (pointer int64) a0-41) 0) 1)
(set! (-> (the-as (pointer gs-reg64) a0-41) 1) (gs-reg64 texflush))
(set! (-> v1-42 base) (&+ a0-41 16))
)
(dma-buffer-add-gs-set arg0 (texflush 1))
(bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1))
(none)
)
;; definition for method 25 of type bigmap
;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 21
(defmethod bigmap-method-25 bigmap ((obj bigmap) (arg0 dma-buffer))
(let ((s4-0 (the-as (pointer uint32) (-> obj bigmap-image art-group))))
(bigmap-method-22 obj arg0 (+ (+ (-> s4-0 0) 16) (the-as uint s4-0)) 0 16 16 0)
(let* ((v1-5 arg0)
(a0-2 (the-as dma-packet (-> v1-5 base)))
)
(set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-2 vif0) (new 'static 'vif-tag))
(set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-5 base) (the-as pointer (&+ a0-2 16)))
)
(let* ((v1-6 arg0)
(a0-4 (the-as gs-gif-tag (-> v1-6 base)))
)
(set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-4 regs) GIF_REGS_ALL_AD)
(set! (-> v1-6 base) (the-as pointer (&+ a0-4 16)))
)
(let* ((v1-7 arg0)
(a0-6 (-> v1-7 base))
)
(set! (-> (the-as (pointer int64) a0-6) 0) 0)
(set! (-> (the-as (pointer gs-reg64) a0-6) 1) (gs-reg64 texflush))
(set! (-> v1-7 base) (&+ a0-6 16))
)
(bigmap-method-22 obj arg0 (+ (+ (-> s4-0 0) 16) (the-as uint s4-0)) 0 16 16 (gs-psm ct32))
(dma-buffer-add-gs-set arg0 (texflush 0))
(let ((v1-10 (+ (* (the int (-> obj scroll y)) 512) (-> s4-0 1))))
(bigmap-method-22 obj arg0 (+ (+ v1-10 16) (the-as int s4-0)) 8 512 208 19)
)
(let* ((v1-13 arg0)
(a0-10 (the-as dma-packet (-> v1-13 base)))
)
(set! (-> a0-10 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-10 vif0) (new 'static 'vif-tag))
(set! (-> a0-10 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-13 base) (the-as pointer (&+ a0-10 16)))
)
(let* ((v1-14 arg0)
(a0-12 (the-as gs-gif-tag (-> v1-14 base)))
)
(set! (-> a0-12 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-12 regs) GIF_REGS_ALL_AD)
(set! (-> v1-14 base) (the-as pointer (&+ a0-12 16)))
)
(let* ((v1-15 arg0)
(a0-14 (-> v1-15 base))
)
(set! (-> (the-as (pointer gs-tex0) a0-14) 0)
(new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1)
)
(set! (-> (the-as (pointer gs-reg64) a0-14) 1) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) a0-14) 2) (new 'static 'gs-tex1))
(set! (-> (the-as (pointer gs-reg64) a0-14) 3) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer int64) a0-14) 4) 1)
(set! (-> (the-as (pointer gs-reg64) a0-14) 5) (gs-reg64 texflush))
(set! (-> v1-15 base) (&+ a0-14 48))
(bigmap-method-22 obj arg0 (+ (+ v1-10 16) (the-as int s4-0)) 8 512 208 (gs-psm mt8))
)
(dma-buffer-add-gs-set arg0
(tex0-1 (new 'static 'gs-tex0 :tbp0 #x8 :tbw #x8 :psm #x13 :tw #x9 :th #x9 :cld #x1))
(tex1-1 (new 'static 'gs-tex1))
(texflush 1)
)
(bigmap-method-26 obj arg0 (-> obj x0) (-> obj y0) (-> obj x1) (-> obj y2))
(let ((v1-21 (+ (* (+ (the int (-> obj scroll y)) 208) 512) (-> s4-0 1))))
(bigmap-method-22 obj arg0 (+ (+ v1-21 16) (the-as int s4-0)) 8 512 208 19)
(bigmap-method-22 obj arg0 (+ (+ v1-21 16) (the-as int s4-0)) 8 512 208 (gs-psm mt8))
)
)
(let* ((v1-24 arg0)
(a0-19 (the-as dma-packet (-> v1-24 base)))
)
(set! (-> a0-19 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-19 vif0) (new 'static 'vif-tag))
(set! (-> a0-19 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-24 base) (the-as pointer (&+ a0-19 16)))
)
(let* ((v1-25 arg0)
(a0-21 (the-as gs-gif-tag (-> v1-25 base)))
)
(set! (-> a0-21 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-21 regs) GIF_REGS_ALL_AD)
(set! (-> v1-25 base) (the-as pointer (&+ a0-21 16)))
)
(let* ((v1-26 arg0)
(a0-23 (-> v1-26 base))
)
(set! (-> (the-as (pointer int64) a0-23) 0) 1)
(set! (-> (the-as (pointer gs-reg64) a0-23) 1) (gs-reg64 texflush))
(set! (-> v1-26 base) (&+ a0-23 16))
)
(dma-buffer-add-gs-set arg0 (texflush 1))
(bigmap-method-26 obj arg0 (-> obj x0) (-> obj y2) (-> obj x1) (-> obj y1))
(none)
)
@@ -776,7 +581,7 @@
;; definition for method 11 of type bigmap
;; INFO: Used lq/sq
;; ERROR: Failed store: (s.w! (+ v1-35 8) 0) at op 125
;; ERROR: Failed store: (s.w! (+ a0-5 8) 0) at op 75
(defmethod bigmap-method-11 bigmap ((obj bigmap) (arg0 int) (arg1 int) (arg2 int) (arg3 int))
(local-vars (sv-96 pointer) (sv-100 texture) (sv-104 matrix) (sv-112 int))
(with-pp
@@ -801,34 +606,11 @@
(with-dma-buffer-add-bucket ((s4-1 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id tex-all-map)
)
(let ((v1-27 s4-1))
(let ((a0-5 (the-as dma-packet (-> v1-27 base))))
(set! (-> a0-5 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-5 vif0) (new 'static 'vif-tag))
(set! (-> a0-5 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-27 base) (the-as pointer (&+ a0-5 16)))
)
)
(let ((v1-28 s4-1))
(let ((a0-7 (the-as gs-gif-tag (-> v1-28 base))))
(set! (-> a0-7 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-7 regs) GIF_REGS_ALL_AD)
(set! (-> v1-28 base) (the-as pointer (&+ a0-7 16)))
)
)
(let ((v1-29 s4-1))
(let ((a0-9 (-> v1-29 base)))
(set! (-> (the-as (pointer gs-test) a0-9) 0)
(new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a0-9) 1) (gs-reg64 test-1))
(set! (-> (the-as (pointer int64) a0-9) 2) 68)
(set! (-> (the-as (pointer gs-reg64) a0-9) 3) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer int64) a0-9) 4) 5)
(set! (-> (the-as (pointer gs-reg64) a0-9) 5) (gs-reg64 clamp-1))
(set! (-> v1-29 base) (&+ a0-9 48))
)
)
(dma-buffer-add-gs-set s4-1
(test-1 (new 'static 'gs-test :ate #x1 :afail #x3 :zte #x1 :ztst (gs-ztest always)))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
)
(if (= (-> obj bigmap-index) 20)
(bigmap-method-25 obj s4-1)
(bigmap-method-24 obj s4-1)
@@ -1117,7 +899,3 @@
;; failed to figure out what this is:
(kmemclose)
+32 -144
View File
@@ -1167,6 +1167,7 @@
)
;; definition for method 3 of type engine-minimap
;; INFO: this function exists in multiple non-identical object files
(defmethod inspect engine-minimap ((obj engine-minimap))
((the-as (function engine-minimap engine-minimap) (find-parent-method engine-minimap 3)) obj)
(let ((s5-0 0)
@@ -1963,6 +1964,7 @@
;; definition for method 21 of type minimap
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-4 8) 0) at op 35
(defmethod sub-draw-1-1 minimap ((obj minimap) (arg0 minimap-draw-work))
(with-pp
(let ((s5-0 (-> arg0 buf)))
@@ -1978,34 +1980,11 @@
)
)
(&+! (-> s5-0 base) 112)
(let* ((v1-8 s5-0)
(a0-4 (the-as dma-packet (-> v1-8 base)))
)
(set! (-> a0-4 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-4 vif0) (new 'static 'vif-tag))
(set! (-> a0-4 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-8 base) (the-as pointer (&+ a0-4 16)))
)
(let* ((v1-9 s5-0)
(a0-6 (the-as gs-gif-tag (-> v1-9 base)))
)
(set! (-> a0-6 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-6 regs) GIF_REGS_ALL_AD)
(set! (-> v1-9 base) (the-as pointer (&+ a0-6 16)))
)
(let* ((v1-10 s5-0)
(a0-8 (-> v1-10 base))
)
(set! (-> (the-as (pointer gs-clamp) a0-8) 0) (new 'static 'gs-clamp))
(set! (-> (the-as (pointer gs-reg64) a0-8) 1) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-test) a0-8) 2)
(new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a0-8) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-texa) a0-8) 4) (new 'static 'gs-texa :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) a0-8) 5) (gs-reg64 texa))
(set! (-> v1-10 base) (&+ a0-8 48))
)
(dma-buffer-add-gs-set s5-0
(clamp-1 (new 'static 'gs-clamp))
(test-1 (new 'static 'gs-test :ate #x1 :afail #x1 :zte #x1 :ztst (gs-ztest always)))
(texa (new 'static 'gs-texa :ta1 #x80))
)
(let ((s3-1 (the-as object (-> s5-0 base))))
(let ((f30-0 (-> *video-params* relative-x-scale)))
(set! (-> (the-as (pointer uint128) s3-1)) (-> obj draw2-tmpl dma-vif quad))
@@ -2071,28 +2050,7 @@
)
(seek! (-> obj frustum-alpha) f0-57 (-> pp clock seconds-per-frame))
)
(let* ((v1-55 s5-0)
(a0-44 (the-as dma-packet (-> v1-55 base)))
)
(set! (-> a0-44 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-44 vif0) (new 'static 'vif-tag))
(set! (-> a0-44 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-55 base) (the-as pointer (&+ a0-44 16)))
)
(let* ((v1-56 s5-0)
(a0-46 (the-as gs-gif-tag (-> v1-56 base)))
)
(set! (-> a0-46 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-46 regs) GIF_REGS_ALL_AD)
(set! (-> v1-56 base) (the-as pointer (&+ a0-46 16)))
)
(let* ((v1-57 s5-0)
(a0-48 (-> v1-57 base))
)
(set! (-> (the-as (pointer gs-xy-offset) a0-48) 0) (new 'static 'gs-xy-offset :ofx #x640 :ofy #x640))
(set! (-> (the-as (pointer gs-reg64) a0-48) 1) (gs-reg64 xyoffset-1))
(set! (-> v1-57 base) (&+ a0-48 16))
)
(dma-buffer-add-gs-set s5-0 (xyoffset-1 (new 'static 'gs-xy-offset :ofx #x640 :ofy #x640)))
(when (!= (-> obj frustum-alpha) 0.0)
(let ((s3-2 (the-as connection-pers (-> *minimap* engine alive-list-override))))
(while s3-2
@@ -2148,34 +2106,11 @@
(set! s3-6 (-> s3-6 next))
)
)
(let* ((v1-105 s5-0)
(a0-60 (the-as dma-packet (-> v1-105 base)))
)
(set! (-> a0-60 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-60 vif0) (new 'static 'vif-tag))
(set! (-> a0-60 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-105 base) (the-as pointer (&+ a0-60 16)))
)
(let* ((v1-106 s5-0)
(a0-62 (the-as gs-gif-tag (-> v1-106 base)))
)
(set! (-> a0-62 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-62 regs) GIF_REGS_ALL_AD)
(set! (-> v1-106 base) (the-as pointer (&+ a0-62 16)))
)
(let* ((v1-107 s5-0)
(a0-64 (-> v1-107 base))
)
(set! (-> (the-as (pointer gs-frame) a0-64) 0)
(new 'static 'gs-frame :fbw #x2 :fbmsk #xffffff :fbp (-> *map-texture-base* vram-page))
)
(set! (-> (the-as (pointer gs-reg64) a0-64) 1) (gs-reg64 frame-1))
(set! (-> (the-as (pointer gs-alpha) a0-64) 2) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a0-64) 3) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-xy-offset) a0-64) 4) (new 'static 'gs-xy-offset))
(set! (-> (the-as (pointer gs-reg64) a0-64) 5) (gs-reg64 xyoffset-1))
(set! (-> v1-107 base) (&+ a0-64 48))
)
(dma-buffer-add-gs-set s5-0
(frame-1 (new 'static 'gs-frame :fbw #x2 :fbmsk #xffffff :fbp (-> *map-texture-base* vram-page)))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(xyoffset-1 (new 'static 'gs-xy-offset))
)
(let ((s3-7 (the-as object (-> s5-0 base))))
(set! (-> (the-as (pointer uint128) s3-7)) (-> obj adgif-tmpl dma-vif quad))
(set! (-> (the-as (pointer uint128) s3-7) 1) (-> obj adgif-tmpl quad 1))
@@ -2202,52 +2137,26 @@
;; definition for method 19 of type minimap
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-2 8) 0) at op 11
(defmethod sub-draw-1-2 minimap ((obj minimap) (arg0 minimap-draw-work))
(local-vars (a3-4 int) (t0-4 int) (sv-48 vector) (sv-52 matrix) (sv-56 vector))
(let ((s5-0 (-> arg0 buf)))
(reset-display-gs-state *display* s5-0)
(let* ((v1-0 s5-0)
(a0-2 (the-as dma-packet (-> v1-0 base)))
)
(set! (-> a0-2 dma) (new 'static 'dma-tag :qwc #x7 :id (dma-tag-id cnt)))
(set! (-> a0-2 vif0) (new 'static 'vif-tag))
(set! (-> a0-2 vif1) (new 'static 'vif-tag :imm #x7 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (the-as pointer (&+ a0-2 16)))
)
(let* ((v1-1 s5-0)
(a0-4 (the-as gs-gif-tag (-> v1-1 base)))
)
(set! (-> a0-4 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x6))
(set! (-> a0-4 regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (the-as pointer (&+ a0-4 16)))
)
(let* ((s3-0 s5-0)
(s2-0 (-> s3-0 base))
)
(set! (-> (the-as (pointer gs-test) s2-0) 0) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
(set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-alpha) s2-0) 2) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-tex0) s2-0) 4)
(new 'static 'gs-tex0
:tbw #x2
:tcc #x1
:th (log2 128)
:tw (log2 128)
:tbp0 (-> *map-texture-base* vram-block)
)
)
(set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) s2-0) 6) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-clamp) s2-0) 8)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer uint64) s2-0) 10) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) s2-0) 11) (gs-reg64 texflush))
(set! (-> s3-0 base) (&+ s2-0 96))
)
(dma-buffer-add-gs-set s5-0
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest greater-equal)))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(tex0-1 (new 'static 'gs-tex0
:tbw #x2
:tcc #x1
:th (log2 128)
:tw (log2 128)
:tbp0 (-> *map-texture-base* vram-block)
)
)
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(texflush 0)
)
(let ((f30-0 (-> *video-params* relative-x-scale)))
(let ((v1-20 (the-as object (-> s5-0 base)))
(t0-0 (the int (* 112.0 f30-0)))
@@ -2295,30 +2204,9 @@
)
)
(&+! (-> s5-0 base) 112)
(let* ((v1-25 s5-0)
(a0-20 (the-as dma-packet (-> v1-25 base)))
)
(set! (-> a0-20 dma) (new 'static 'dma-tag :qwc #x2 :id (dma-tag-id cnt)))
(set! (-> a0-20 vif0) (new 'static 'vif-tag))
(set! (-> a0-20 vif1) (new 'static 'vif-tag :imm #x2 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-25 base) (the-as pointer (&+ a0-20 16)))
)
(let* ((v1-26 s5-0)
(a0-22 (the-as gs-gif-tag (-> v1-26 base)))
)
(set! (-> a0-22 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x1))
(set! (-> a0-22 regs) GIF_REGS_ALL_AD)
(set! (-> v1-26 base) (the-as pointer (&+ a0-22 16)))
)
(let* ((v1-27 s5-0)
(a0-24 (-> v1-27 base))
)
(set! (-> (the-as (pointer gs-test) a0-24) 0)
(new 'static 'gs-test :ate #x1 :atst (gs-atest greater) :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a0-24) 1) (gs-reg64 test-1))
(set! (-> v1-27 base) (&+ a0-24 16))
)
(dma-buffer-add-gs-set s5-0
(test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest greater) :zte #x1 :ztst (gs-ztest always)))
)
(set! sv-48 (new-stack-vector0))
(let ((v1-29 (new 'stack-no-clear 'matrix)))
(set! (-> v1-29 quad 0) (the-as uint128 0))
+2 -2
View File
@@ -542,7 +542,7 @@
(cond
(*progress-process*
(deactivate (-> *progress-process* 0))
(set! (-> *blit-displays-work* menu-mode) (the-as basic #t))
(set! (-> *blit-displays-work* menu-mode) #t)
(set! *progress-process* (process-spawn progress arg1 :to arg0 :stack (&-> *progress-stack* 14336)))
(set-master-mode 'progress)
)
@@ -1534,7 +1534,7 @@
)
)
(when (hud-hidden?)
(set! (-> *blit-displays-work* menu-mode) (the-as basic #t))
(set! (-> *blit-displays-work* menu-mode) #t)
(set! (-> self pos-transition) (seek-ease
(-> self pos-transition)
f30-0
+3 -3
View File
@@ -6,13 +6,13 @@
;; definition for function gs-set-default-store-image
;; INFO: Used lq/sq
(defun gs-set-default-store-image ((arg0 gs-store-image-packet) (arg1 int) (arg2 int) (arg3 int) (arg4 int) (arg5 int) (arg6 int) (arg7 int))
(defun gs-set-default-store-image ((arg0 gs-store-image-packet) (arg1 int) (arg2 int) (arg3 gs-psm) (arg4 int) (arg5 int) (arg6 int) (arg7 int))
(set! (-> arg0 vifcode 0) (new 'static 'vif-tag))
(set! (-> arg0 vifcode 1) (new 'static 'vif-tag :imm #x8000 :cmd (vif-cmd mskpath3)))
(set! (-> arg0 vifcode 2) (new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1))
(set! (-> arg0 vifcode 3) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
(set! (-> arg0 giftag) (new 'static 'gif-tag :nloop #x5 :eop #x1 :nreg #x1 :regs0 (gif-reg-id a+d)))
(set! (-> arg0 bitbltbuf) (new 'static 'gs-bitbltbuf :sbp arg1 :sbw arg2 :spsm arg3))
(set! (-> arg0 bitbltbuf) (new 'static 'gs-bitbltbuf :sbp arg1 :sbw arg2 :spsm (the-as int arg3)))
(set! (-> arg0 bitbltbuf-addr) (gs-reg64 bitbltbuf))
(set! (-> arg0 trxpos) (new 'static 'gs-trxpos :ssax arg4 :ssay arg5))
(set! (-> arg0 trxpos-addr) (gs-reg64 trxpos))
@@ -41,7 +41,7 @@
(let ((s4-0 (new 'stack 'file-stream *image-name* 'write)))
(let ((s3-0 (-> *display* frames (-> *display* on-screen) global-buf data)))
(let ((s2-0 (new 'static 'gs-store-image-packet)))
(gs-set-default-store-image s2-0 #x3300 (/ gp-0 64) 0 0 0 gp-0 s5-0)
(gs-set-default-store-image s2-0 #x3300 (/ gp-0 64) (gs-psm ct32) 0 0 gp-0 s5-0)
(flush-cache 0)
(gs-store-image s2-0 s3-0)
)
+12 -40
View File
@@ -561,48 +561,20 @@
;; definition for method 10 of type profile-array
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ a0-1 8) 0) at op 7
(defmethod draw-bars! profile-array ((obj profile-array) (arg0 dma-buffer) (arg1 int))
(local-vars (sv-16 (function _varargs_ object)) (sv-32 (function _varargs_ object)))
(let* ((v1-0 arg0)
(a0-1 (the-as object (-> v1-0 base)))
)
(set! (-> (the-as dma-packet a0-1) dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
(set! (-> (the-as dma-packet a0-1) vif0) (new 'static 'vif-tag))
(set! (-> (the-as dma-packet a0-1) vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-0 base) (&+ (the-as pointer a0-1) 16))
)
(let* ((v1-1 arg0)
(a0-3 (the-as object (-> v1-1 base)))
)
(set! (-> (the-as gs-gif-tag a0-3) tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9))
(set! (-> (the-as gs-gif-tag a0-3) regs) GIF_REGS_ALL_AD)
(set! (-> v1-1 base) (&+ (the-as pointer a0-3) 16))
)
(let* ((v1-2 arg0)
(a0-5 (-> v1-2 base))
)
(set! (-> (the-as (pointer gs-alpha) a0-5) 0) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a0-5) 1) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer gs-zbuf) a0-5) 2) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(set! (-> (the-as (pointer gs-reg64) a0-5) 3) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) a0-5) 4) (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
(set! (-> (the-as (pointer gs-reg64) a0-5) 5) (gs-reg64 test-1))
(set! (-> (the-as (pointer uint64) a0-5) 6) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) a0-5) 7) (gs-reg64 pabe))
(set! (-> (the-as (pointer gs-clamp) a0-5) 8)
(new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp))
)
(set! (-> (the-as (pointer gs-reg64) a0-5) 9) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-tex1) a0-5) 10) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) a0-5) 11) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-texa) a0-5) 12) (new 'static 'gs-texa :ta1 #x80))
(set! (-> (the-as (pointer gs-reg64) a0-5) 13) (gs-reg64 texa))
(set! (-> (the-as (pointer gs-texclut) a0-5) 14) (new 'static 'gs-texclut :cbw #x4))
(set! (-> (the-as (pointer gs-reg64) a0-5) 15) (gs-reg64 texclut))
(set! (-> (the-as (pointer uint64) a0-5) 16) (the-as uint *fog-color*))
(set! (-> (the-as (pointer gs-reg64) a0-5) 17) (gs-reg64 fogcol))
(set! (-> v1-2 base) (&+ a0-5 144))
)
(dma-buffer-add-gs-set arg0
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24) :zmsk #x1))
(test-1 (new 'static 'gs-test :zte #x1 :ztst (gs-ztest always)))
(pabe 0)
(clamp-1 (new 'static 'gs-clamp :wms (gs-tex-wrap-mode clamp) :wmt (gs-tex-wrap-mode clamp)))
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(texa (new 'static 'gs-texa :ta1 #x80))
(texclut (new 'static 'gs-texclut :cbw #x4))
(fogcol *fog-color*)
)
(let ((v1-5 (* (+ *profile-x* (/ *profile-w* 2)) 16))
(a0-9 (-> arg0 base))
)
@@ -864,127 +864,126 @@
(with-dma-buffer-add-bucket ((v1-15 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id debug-no-zbuf1)
)
(let ((a1-1 (-> s5-0 0)))
(let ((t3-0 (-> s5-0 1))
(t2-0 (-> s5-0 2))
(a3-0 (-> s5-0 3))
(t0-0 (make-u128 0 (the-as uint #x4024c00000008001)))
(t1-0 #x4141)
)
(+! (-> a1-1 z) -8192)
(+! (-> t3-0 z) -8192)
(+! (-> t2-0 z) -8192)
(+! (-> a3-0 z) -8192)
(let ((a0-28 (-> v1-15 base)))
(let* ((t4-0 v1-15)
(t5-0 (-> t4-0 base))
)
(set! (-> (the-as (pointer int64) t5-0)) #x10000000)
(s.w! (+ t5-0 8) 0)
(let ((t6-1 #x50000000))
(s.w! (+ t5-0 12) t6-1)
)
(set! (-> t4-0 base) (&+ t5-0 16))
)
(let* ((t4-1 v1-15)
(t5-2 (-> t4-1 base))
)
(set! (-> (the-as (pointer uint64) t5-2)) t0-0)
(s.d! (+ t5-2 8) t1-0)
(set! (-> t4-1 base) (&+ t5-2 16))
)
(let* ((t4-2 v1-15)
(t5-4 (-> t4-2 base))
)
(set! (-> (the-as (pointer uint128) t5-4)) (-> gp-0 quad))
(let ((t6-3 (-> a1-1 quad)))
(s.q! (+ t5-4 16) t6-3)
)
(let ((t6-4 (-> gp-0 quad)))
(s.q! (+ t5-4 32) t6-4)
)
(let ((t6-5 (-> t3-0 quad)))
(s.q! (+ t5-4 48) t6-5)
)
(set! (-> t4-2 base) (&+ t5-4 64))
)
(let* ((t4-3 v1-15)
(t5-6 (-> t4-3 base))
)
(set! (-> (the-as (pointer uint64) t5-6)) t0-0)
(s.d! (+ t5-6 8) t1-0)
(set! (-> t4-3 base) (&+ t5-6 16))
)
(let* ((t4-4 v1-15)
(t5-8 (-> t4-4 base))
)
(set! (-> (the-as (pointer uint128) t5-8)) (-> gp-0 quad))
(let ((t3-1 (-> t3-0 quad)))
(s.q! (+ t5-8 16) t3-1)
)
(let ((t3-2 (-> gp-0 quad)))
(s.q! (+ t5-8 32) t3-2)
)
(let ((t3-3 (-> t2-0 quad)))
(s.q! (+ t5-8 48) t3-3)
)
(set! (-> t4-4 base) (&+ t5-8 64))
)
(let* ((t3-5 v1-15)
(t4-5 (-> t3-5 base))
)
(set! (-> (the-as (pointer uint64) t4-5)) t0-0)
(s.d! (+ t4-5 8) t1-0)
(set! (-> t3-5 base) (&+ t4-5 16))
)
(let* ((t3-6 v1-15)
(t4-7 (-> t3-6 base))
)
(set! (-> (the-as (pointer uint128) t4-7)) (-> gp-0 quad))
(let ((t2-1 (-> t2-0 quad)))
(s.q! (+ t4-7 16) t2-1)
)
(let ((t2-2 (-> gp-0 quad)))
(s.q! (+ t4-7 32) t2-2)
)
(let ((t2-3 (-> a3-0 quad)))
(s.q! (+ t4-7 48) t2-3)
)
(set! (-> t3-6 base) (&+ t4-7 64))
)
(let* ((t2-5 v1-15)
(t3-7 (-> t2-5 base))
)
(set! (-> (the-as (pointer uint64) t3-7)) t0-0)
(s.d! (+ t3-7 8) t1-0)
(set! (-> t2-5 base) (&+ t3-7 16))
)
(let* ((t0-2 v1-15)
(t1-1 (-> t0-2 base))
)
(set! (-> (the-as (pointer uint128) t1-1)) (-> gp-0 quad))
(let ((a3-1 (-> a3-0 quad)))
(s.q! (+ t1-1 16) a3-1)
)
(let ((a3-2 (-> gp-0 quad)))
(s.q! (+ t1-1 32) a3-2)
)
(let ((a1-2 (-> a1-1 quad)))
(s.q! (+ t1-1 48) a1-2)
)
(set! (-> t0-2 base) (&+ t1-1 64))
)
(let ((a3-6 (/ (the-as int (+ (- -16 (the-as int a0-28)) (the-as int (-> v1-15 base)))) 16)))
(cond
((nonzero? a3-6)
(logior! (-> (the-as (pointer uint64) a0-28)) (shr (shl a3-6 48) 48))
(let ((a3-10 (logior (l.d (&+ a0-28 8)) (shl (shr (shl a3-6 48) 48) 32))))
(s.d! (+ a0-28 8) a3-10)
)
(let ((a1-1 (-> s5-0 0))
(t3-0 (-> s5-0 1))
(t2-0 (-> s5-0 2))
(a3-0 (-> s5-0 3))
(t0-0 (make-u128 0 (the-as uint #x4024c00000008001)))
(t1-0 #x4141)
)
(+! (-> a1-1 z) -8192)
(+! (-> t3-0 z) -8192)
(+! (-> t2-0 z) -8192)
(+! (-> a3-0 z) -8192)
(let ((a0-28 (-> v1-15 base)))
(let* ((t4-0 v1-15)
(t5-0 (-> t4-0 base))
)
(else
(set! (-> v1-15 base) a0-28)
)
(set! (-> (the-as (pointer int64) t5-0)) #x10000000)
(s.w! (+ t5-0 8) 0)
(let ((t6-1 #x50000000))
(s.w! (+ t5-0 12) t6-1)
)
(set! (-> t4-0 base) (&+ t5-0 16))
)
(let* ((t4-1 v1-15)
(t5-2 (-> t4-1 base))
)
(set! (-> (the-as (pointer uint64) t5-2)) t0-0)
(s.d! (+ t5-2 8) t1-0)
(set! (-> t4-1 base) (&+ t5-2 16))
)
(let* ((t4-2 v1-15)
(t5-4 (-> t4-2 base))
)
(set! (-> (the-as (pointer uint128) t5-4)) (-> gp-0 quad))
(let ((t6-3 (-> a1-1 quad)))
(s.q! (+ t5-4 16) t6-3)
)
(let ((t6-4 (-> gp-0 quad)))
(s.q! (+ t5-4 32) t6-4)
)
(let ((t6-5 (-> t3-0 quad)))
(s.q! (+ t5-4 48) t6-5)
)
(set! (-> t4-2 base) (&+ t5-4 64))
)
(let* ((t4-3 v1-15)
(t5-6 (-> t4-3 base))
)
(set! (-> (the-as (pointer uint64) t5-6)) t0-0)
(s.d! (+ t5-6 8) t1-0)
(set! (-> t4-3 base) (&+ t5-6 16))
)
(let* ((t4-4 v1-15)
(t5-8 (-> t4-4 base))
)
(set! (-> (the-as (pointer uint128) t5-8)) (-> gp-0 quad))
(let ((t3-1 (-> t3-0 quad)))
(s.q! (+ t5-8 16) t3-1)
)
(let ((t3-2 (-> gp-0 quad)))
(s.q! (+ t5-8 32) t3-2)
)
(let ((t3-3 (-> t2-0 quad)))
(s.q! (+ t5-8 48) t3-3)
)
(set! (-> t4-4 base) (&+ t5-8 64))
)
(let* ((t3-5 v1-15)
(t4-5 (-> t3-5 base))
)
(set! (-> (the-as (pointer uint64) t4-5)) t0-0)
(s.d! (+ t4-5 8) t1-0)
(set! (-> t3-5 base) (&+ t4-5 16))
)
(let* ((t3-6 v1-15)
(t4-7 (-> t3-6 base))
)
(set! (-> (the-as (pointer uint128) t4-7)) (-> gp-0 quad))
(let ((t2-1 (-> t2-0 quad)))
(s.q! (+ t4-7 16) t2-1)
)
(let ((t2-2 (-> gp-0 quad)))
(s.q! (+ t4-7 32) t2-2)
)
(let ((t2-3 (-> a3-0 quad)))
(s.q! (+ t4-7 48) t2-3)
)
(set! (-> t3-6 base) (&+ t4-7 64))
)
(let* ((t2-5 v1-15)
(t3-7 (-> t2-5 base))
)
(set! (-> (the-as (pointer uint64) t3-7)) t0-0)
(s.d! (+ t3-7 8) t1-0)
(set! (-> t2-5 base) (&+ t3-7 16))
)
(let* ((t0-2 v1-15)
(t1-1 (-> t0-2 base))
)
(set! (-> (the-as (pointer uint128) t1-1)) (-> gp-0 quad))
(let ((a3-1 (-> a3-0 quad)))
(s.q! (+ t1-1 16) a3-1)
)
(let ((a3-2 (-> gp-0 quad)))
(s.q! (+ t1-1 32) a3-2)
)
(let ((a1-2 (-> a1-1 quad)))
(s.q! (+ t1-1 48) a1-2)
)
(set! (-> t0-2 base) (&+ t1-1 64))
)
(let ((a3-6 (/ (the-as int (+ (- -16 (the-as int a0-28)) (the-as int (-> v1-15 base)))) 16)))
(cond
((nonzero? a3-6)
(logior! (-> (the-as (pointer uint64) a0-28)) (shr (shl a3-6 48) 48))
(let ((a3-10 (logior (l.d (&+ a0-28 8)) (shl (shr (shl a3-6 48) 48) 32))))
(s.d! (+ a0-28 8) a3-10)
)
)
(else
(set! (-> v1-15 base) a0-28)
)
)
)
+28 -97
View File
@@ -32,7 +32,7 @@
;; definition for function draw-vortex
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
;; ERROR: Failed store: (s.w! (+ v1-76 8) 0) at op 268
;; ERROR: Failed store: (s.w! (+ a0-6 8) 0) at op 34
(defun draw-vortex ()
(rlet ((vf27 :class vf))
(when (and (logtest? (-> *display* vu1-enable-user) (vu1-renderer-mask sky))
@@ -43,34 +43,11 @@
(with-dma-buffer-add-bucket ((s4-0 (-> *display* frames (-> *display* on-screen) global-buf))
(bucket-id sky-draw)
)
(let ((v1-17 s4-0))
(let ((a0-6 (the-as dma-packet (-> v1-17 base))))
(set! (-> a0-6 dma) (new 'static 'dma-tag :qwc #x4 :id (dma-tag-id cnt)))
(set! (-> a0-6 vif0) (new 'static 'vif-tag))
(set! (-> a0-6 vif1) (new 'static 'vif-tag :imm #x4 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-17 base) (the-as pointer (&+ a0-6 16)))
)
)
(let ((v1-18 s4-0))
(let ((a0-8 (the-as gs-gif-tag (-> v1-18 base))))
(set! (-> a0-8 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x3))
(set! (-> a0-8 regs) GIF_REGS_ALL_AD)
(set! (-> v1-18 base) (the-as pointer (&+ a0-8 16)))
)
)
(let ((v1-19 s4-0))
(let ((a0-10 (-> v1-19 base)))
(set! (-> (the-as (pointer gs-zbuf) a0-10) 0) (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(set! (-> (the-as (pointer gs-reg64) a0-10) 1) (gs-reg64 zbuf-1))
(set! (-> (the-as (pointer gs-test) a0-10) 2)
(new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always))
)
(set! (-> (the-as (pointer gs-reg64) a0-10) 3) (gs-reg64 test-1))
(set! (-> (the-as (pointer gs-rgbaq) a0-10) 4) (new 'static 'gs-rgbaq :b #x40 :q 1.0))
(set! (-> (the-as (pointer gs-reg64) a0-10) 5) (gs-reg64 rgbaq))
(set! (-> v1-19 base) (&+ a0-10 48))
)
)
(dma-buffer-add-gs-set s4-0
(zbuf-1 (new 'static 'gs-zbuf :zbp #x130 :psm (gs-psm ct24)))
(test-1 (new 'static 'gs-test :ate #x1 :atst (gs-atest always) :zte #x1 :ztst (gs-ztest always)))
(rgbaq (new 'static 'gs-rgbaq :b #x40 :q 1.0))
)
(let ((v1-20 (-> s4-0 base)))
(set! (-> (the-as (pointer uint128) v1-20)) (-> *sky-work* sprite-tmpl dma-vif quad))
(set! (-> (the-as (pointer uint128) v1-20) 1) (-> *sky-work* sprite-tmpl quad 1))
@@ -81,46 +58,24 @@
(set-vector! (the-as vector4w (&+ v1-23 16)) #x9000 #x8d00 0 0)
)
(&+! (-> s4-0 base) 32)
(let ((v1-27 s4-0))
(let ((a0-19 (the-as dma-packet (-> v1-27 base))))
(set! (-> a0-19 dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
(set! (-> a0-19 vif0) (new 'static 'vif-tag))
(set! (-> a0-19 vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-27 base) (the-as pointer (&+ a0-19 16)))
)
)
(let ((v1-28 s4-0))
(let ((a0-21 (the-as gs-gif-tag (-> v1-28 base))))
(set! (-> a0-21 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x5))
(set! (-> a0-21 regs) GIF_REGS_ALL_AD)
(set! (-> v1-28 base) (the-as pointer (&+ a0-21 16)))
)
)
(let ((s3-0 s4-0))
(let ((s2-0 (-> s3-0 base)))
(set! (-> (the-as (pointer gs-tex0) s2-0) 0) (new 'static 'gs-tex0
:tbp0 #x100
:tbw #x2
:psm #x1b
:tcc #x1
:cbp #x300
:cld #x1
:th (log2 128)
:tw (log2 128)
)
)
(set! (-> (the-as (pointer gs-reg64) s2-0) 1) (gs-reg64 tex0-1))
(set! (-> (the-as (pointer gs-tex1) s2-0) 2) (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(set! (-> (the-as (pointer gs-reg64) s2-0) 3) (gs-reg64 tex1-1))
(set! (-> (the-as (pointer gs-clamp) s2-0) 4) (new 'static 'gs-clamp))
(set! (-> (the-as (pointer gs-reg64) s2-0) 5) (gs-reg64 clamp-1))
(set! (-> (the-as (pointer gs-alpha) s2-0) 6) (new 'static 'gs-alpha :b #x1 :d #x1))
(set! (-> (the-as (pointer gs-reg64) s2-0) 7) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer uint64) s2-0) 8) (the-as uint 0))
(set! (-> (the-as (pointer gs-reg64) s2-0) 9) (gs-reg64 texflush))
(set! (-> s3-0 base) (&+ s2-0 80))
)
)
(dma-buffer-add-gs-set s4-0
(tex0-1
(new 'static 'gs-tex0
:tbp0 #x100
:tbw #x2
:psm #x1b
:tcc #x1
:cbp #x300
:cld #x1
:th (log2 128)
:tw (log2 128)
)
)
(tex1-1 (new 'static 'gs-tex1 :mmag #x1 :mmin #x1))
(clamp-1 (new 'static 'gs-clamp))
(alpha-1 (new 'static 'gs-alpha :b #x1 :d #x1))
(texflush 0)
)
(init-vortex-regs)
(.lvf vf27 (&-> *vortex-work* giftag quad))
(set-tex-offset (the-as int (-> *vortex-work* off-s-0)) (the-as int (-> *vortex-work* off-t-0)))
@@ -138,30 +93,10 @@
(set! (-> s3-1 vif1) (new 'static 'vif-tag :cmd (vif-cmd direct) :msk #x1 :imm v1-54))
)
)
(let ((v1-58 s4-0))
(let ((a0-32 (the-as dma-packet (-> v1-58 base))))
(set! (-> a0-32 dma) (new 'static 'dma-tag :qwc #x3 :id (dma-tag-id cnt)))
(set! (-> a0-32 vif0) (new 'static 'vif-tag))
(set! (-> a0-32 vif1) (new 'static 'vif-tag :imm #x3 :cmd (vif-cmd direct) :msk #x1))
(set! (-> v1-58 base) (the-as pointer (&+ a0-32 16)))
)
)
(let ((v1-59 s4-0))
(let ((a0-34 (the-as gs-gif-tag (-> v1-59 base))))
(set! (-> a0-34 tag) (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x2))
(set! (-> a0-34 regs) GIF_REGS_ALL_AD)
(set! (-> v1-59 base) (the-as pointer (&+ a0-34 16)))
)
)
(let ((v1-60 s4-0))
(let ((a0-36 (-> v1-60 base)))
(set! (-> (the-as (pointer gs-alpha) a0-36) 0) (new 'static 'gs-alpha :b #x2 :d #x1))
(set! (-> (the-as (pointer gs-reg64) a0-36) 1) (gs-reg64 alpha-1))
(set! (-> (the-as (pointer uint64) a0-36) 2) (the-as uint 1))
(set! (-> (the-as (pointer gs-reg64) a0-36) 3) (gs-reg64 colclamp))
(set! (-> v1-60 base) (&+ a0-36 32))
)
)
(dma-buffer-add-gs-set s4-0
(alpha-1 (new 'static 'gs-alpha :b #x2 :d #x1))
(colclamp (new 'static 'gs-color-clamp :clamp #x1))
)
(set-tex-offset (the-as int (-> *vortex-work* off-s-1)) (the-as int (-> *vortex-work* off-t-1)))
(let ((s3-2 (the-as dma-packet (-> s4-0 base))))
(&+! (-> s4-0 base) 16)
@@ -195,7 +130,3 @@
(none)
)
)