Files
jak-project/test/decompiler/reference/gs_REF.gc
T
water111 3d2ca71fe3 [Decompile] pad and gs (#389)
* update stuff

* gs reference added

* update config
2021-04-26 21:40:08 -04:00

1172 lines
31 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; definition of type gs-pmode
(deftype gs-pmode (uint64)
((en1 uint8 :offset 0 :size 1)
(en2 uint8 :offset 1 :size 1)
(crtmd uint8 :offset 2 :size 3)
(mmod uint8 :offset 5 :size 1)
(amod uint8 :offset 6 :size 1)
(slbg uint8 :offset 7 :size 1)
(alp uint8 :offset 8 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-smode2
(deftype gs-smode2 (uint64)
((int uint8 :offset 0 :size 1)
(ffmd uint8 :offset 1 :size 1)
(dpms uint8 :offset 2 :size 2)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition for function psm-size
(defun psm-size ((arg0 gs-psm))
(cond
((= arg0 (gs-psm mt8))
64
)
((= arg0 (gs-psm mt4))
32
)
(else
(if
(or
(= arg0 (gs-psm ct16))
(= arg0 (gs-psm ct16s))
(= arg0 (gs-psm mz16))
(= arg0 (gs-psm mz16s))
)
128
256
)
)
)
)
;; definition for function psm-page-height
(defun psm-page-height ((arg0 gs-psm))
(cond
((= arg0 (gs-psm mt8))
64
)
((= arg0 (gs-psm mt4))
128
)
(else
(if
(or
(= arg0 (gs-psm ct16))
(= arg0 (gs-psm ct16s))
(= arg0 (gs-psm mz16))
(= arg0 (gs-psm mz16s))
)
64
32
)
)
)
)
;; definition for function psm->string
(defun psm->string ((arg0 gs-psm))
(let ((v1-0 arg0))
(cond
((= v1-0 (gs-psm mz16s))
"mz16s"
)
((= v1-0 (gs-psm mz16))
"mz16"
)
((= v1-0 (gs-psm mz24))
"mz24"
)
((= v1-0 (gs-psm mz32))
"mz32"
)
((= v1-0 (gs-psm mt4hh))
"mt4hh"
)
((= v1-0 (gs-psm mt4hl))
"mt4hl"
)
((= v1-0 (gs-psm mt8h))
"mt8h"
)
((= v1-0 (gs-psm mt4))
"mt4"
)
((= v1-0 (gs-psm mt8))
"mt8"
)
((= v1-0 (gs-psm ct16s))
"ct16s"
)
((= v1-0 (gs-psm ct16))
"ct16"
)
((= v1-0 (gs-psm ct24))
"ct24"
)
((zero? v1-0)
"ct32"
)
(else
"*unknown*"
)
)
)
)
;; definition of type gs-display-fb
(deftype gs-display-fb (uint64)
((fbp uint16 :offset 0 :size 9)
(fbw uint8 :offset 9 :size 6)
(psm gs-psm :offset 15 :size 5)
(dbx uint16 :offset 32 :size 11)
(dby uint16 :offset 43 :size 11)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-display
(deftype gs-display (uint64)
((dx uint16 :offset 0 :size 12)
(dy uint16 :offset 12 :size 11)
(magh uint8 :offset 23 :size 4)
(magv uint8 :offset 27 :size 2)
(dw uint16 :offset 32 :size 12)
(dh uint16 :offset 44 :size 11)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-bgcolor
(deftype gs-bgcolor (uint64)
((r uint8 :offset 0 :size 8)
(g uint8 :offset 8 :size 8)
(b uint8 :offset 16 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-csr
(deftype gs-csr (uint64)
((signal uint8 :offset 0 :size 1)
(finish uint8 :offset 1 :size 1)
(hsint uint8 :offset 2 :size 1)
(vsint uint8 :offset 3 :size 1)
(edwint uint8 :offset 4 :size 1)
(flush uint8 :offset 8 :size 1)
(reset uint8 :offset 9 :size 1)
(nfield uint8 :offset 12 :size 1)
(field uint8 :offset 13 :size 1)
(fifo uint8 :offset 14 :size 2)
(rev uint8 :offset 16 :size 8)
(id uint8 :offset 24 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-bank
(deftype gs-bank (structure)
((pmode gs-pmode :offset-assert 0)
(smode2 gs-smode2 :offset 32)
(dspfb1 gs-display-fb :offset 112)
(display1 gs-display :offset 128)
(dspfb2 gs-display-fb :offset 144)
(display2 gs-display :offset 160)
(extbuf uint64 :offset 176)
(extdata uint64 :offset 192)
(extwrite uint64 :offset 208)
(bgcolor gs-bgcolor :offset 224)
(csr gs-csr :offset 4096)
(imr uint64 :offset 4112)
(busdir uint64 :offset 4160)
)
:method-count-assert 9
:size-assert #x1048
:flag-assert #x900001048
)
;; definition for method 3 of type gs-bank
(defmethod inspect gs-bank ((obj gs-bank))
(format #t "[~8x] ~A~%" obj 'gs-bank)
(format #t "~Tpmode: #x~X~%" (-> obj pmode))
(format #t "~Tsmode2: #x~X~%" (-> obj smode2))
(format #t "~Tdspfb1: #x~X~%" (-> obj dspfb1))
(format #t "~Tdisplay1: #x~X~%" (-> obj display1))
(format #t "~Tdspfb2: #x~X~%" (-> obj dspfb2))
(format #t "~Tdisplay2: #x~X~%" (-> obj display2))
(format #t "~Textbuf: #x~X~%" (-> obj extbuf))
(format #t "~Textdata: #x~X~%" (-> obj extdata))
(format #t "~Textwrite: #x~X~%" (-> obj extwrite))
(format #t "~Tbgcolor: #x~X~%" (-> obj bgcolor))
(format #t "~Tcsr: #x~X~%" (-> obj csr))
(format #t "~Timr: #x~X~%" (-> obj imr))
(format #t "~Tbusdir: #x~X~%" (-> obj busdir))
obj
)
;; definition of type gs-frame
(deftype gs-frame (uint64)
((fbp uint16 :offset 0 :size 9)
(fbw uint8 :offset 16 :size 6)
(psm uint8 :offset 24 :size 6)
(fbmsk uint32 :offset 32 :size 32)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-zbuf
(deftype gs-zbuf (uint64)
((zbp uint16 :offset 0 :size 9)
(psm uint8 :offset 24 :size 4)
(zmsk uint8 :offset 32 :size 1)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-xy-offset
(deftype gs-xy-offset (uint64)
((ofx uint16 :offset 0 :size 16)
(ofy uint16 :offset 32 :size 16)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-scissor
(deftype gs-scissor (uint64)
((scax0 uint16 :offset 0 :size 11)
(scax1 uint16 :offset 16 :size 11)
(scay0 uint16 :offset 32 :size 11)
(scay1 uint16 :offset 48 :size 11)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-prmode-cont
(deftype gs-prmode-cont (uint64)
((ac uint8 :offset 0 :size 1)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-color-clamp
(deftype gs-color-clamp (uint64)
((clamp uint8 :offset 0 :size 1)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-dthe
(deftype gs-dthe (uint64)
((dthe uint8 :offset 0 :size 1)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-test
(deftype gs-test (uint64)
((ate uint8 :offset 0 :size 1)
(atst uint8 :offset 1 :size 3)
(aref uint8 :offset 4 :size 8)
(afail uint8 :offset 12 :size 2)
(date uint8 :offset 14 :size 1)
(datm uint8 :offset 15 :size 1)
(zte uint8 :offset 16 :size 1)
(ztst uint8 :offset 17 :size 2)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-prim
(deftype gs-prim (uint64)
((prim gs-prim-type :offset 0 :size 3)
(iip uint8 :offset 3 :size 1)
(tme uint8 :offset 4 :size 1)
(fge uint8 :offset 5 :size 1)
(abe uint8 :offset 6 :size 1)
(aa1 uint8 :offset 7 :size 1)
(fst uint8 :offset 8 :size 1)
(ctxt uint8 :offset 9 :size 1)
(fix uint8 :offset 10 :size 1)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-rgbaq
(deftype gs-rgbaq (uint64)
((r uint8 :offset 0 :size 8)
(g uint8 :offset 8 :size 8)
(b uint8 :offset 16 :size 8)
(a uint8 :offset 24 :size 8)
(q float :offset 32 :size 32)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-xyz
(deftype gs-xyz (uint64)
((x uint16 :offset 0 :size 16)
(y uint16 :offset 16 :size 16)
(z uint32 :offset 32 :size 32)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-uv
(deftype gs-uv (uint64)
((u uint16 :offset 0 :size 14)
(v uint16 :offset 16 :size 14)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-st
(deftype gs-st (uint64)
((s float :offset 0 :size 32)
(t float :offset 32 :size 32)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-xyzf
(deftype gs-xyzf (uint64)
((x uint16 :offset 0 :size 16)
(y uint16 :offset 16 :size 16)
(z uint32 :offset 32 :size 24)
(f uint8 :offset 56 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-trxpos
(deftype gs-trxpos (uint64)
((ssax uint16 :offset 0 :size 11)
(ssay uint16 :offset 16 :size 11)
(dsax uint16 :offset 32 :size 11)
(dsay uint16 :offset 48 :size 11)
(dir uint8 :offset 59 :size 2)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-trxreg
(deftype gs-trxreg (uint64)
((rrw uint16 :offset 0 :size 12)
(rrh uint16 :offset 32 :size 12)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-trxdir
(deftype gs-trxdir (uint64)
((xdir uint8 :offset 0 :size 2)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-bitbltbuf
(deftype gs-bitbltbuf (uint64)
((sbp uint16 :offset 0 :size 14)
(sbw uint8 :offset 16 :size 6)
(spsm uint8 :offset 24 :size 6)
(dbp uint16 :offset 32 :size 14)
(dbw uint8 :offset 48 :size 6)
(dpsm uint8 :offset 56 :size 6)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-tex0
(deftype gs-tex0 (uint64)
((tbp0 uint16 :offset 0 :size 14)
(tbw uint8 :offset 14 :size 6)
(psm uint8 :offset 20 :size 6)
(tw uint8 :offset 26 :size 4)
(th uint8 :offset 30 :size 4)
(tcc uint8 :offset 34 :size 1)
(tfx uint8 :offset 35 :size 2)
(cbp uint16 :offset 37 :size 14)
(cpsm uint8 :offset 51 :size 4)
(csm uint8 :offset 55 :size 1)
(csa uint8 :offset 56 :size 5)
(cld uint8 :offset 61 :size 3)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-tex1
(deftype gs-tex1 (uint64)
((lcm uint8 :offset 0 :size 1)
(mxl uint8 :offset 2 :size 3)
(mmag uint8 :offset 5 :size 1)
(mmin uint8 :offset 6 :size 3)
(mtba uint8 :offset 9 :size 1)
(l uint8 :offset 19 :size 2)
(k int16 :offset 32 :size 12)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-texa
(deftype gs-texa (uint64)
((ta0 uint8 :offset 0 :size 8)
(aem uint8 :offset 15 :size 1)
(ta1 uint8 :offset 32 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-texclut
(deftype gs-texclut (uint64)
((cbw uint8 :offset 0 :size 6)
(cou uint8 :offset 6 :size 6)
(cov uint16 :offset 12 :size 10)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-miptbp
(deftype gs-miptbp (uint64)
((tbp1 uint16 :offset 0 :size 14)
(tbw1 uint8 :offset 14 :size 6)
(tbp2 uint16 :offset 20 :size 14)
(tbw2 uint8 :offset 34 :size 6)
(tbp3 uint16 :offset 40 :size 14)
(tbw3 uint8 :offset 54 :size 6)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-alpha
(deftype gs-alpha (uint64)
((a uint8 :offset 0 :size 2)
(b uint8 :offset 2 :size 2)
(c uint8 :offset 4 :size 2)
(d uint8 :offset 6 :size 2)
(fix uint8 :offset 32 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition for method 3 of type gs-alpha
(defmethod inspect gs-alpha ((obj gs-alpha))
(format #t "[~8x] ~A~%" obj 'gs-alpha)
(format #t "~Ta: ~D~%" (-> obj a))
(format #t "~Tb: ~D~%" (-> obj b))
(format #t "~Tc: ~D~%" (-> obj c))
(format #t "~Td: ~D~%" (-> obj d))
(format #t "~Tfix: ~D~%" (-> obj fix))
obj
)
;; definition of type gs-clamp
(deftype gs-clamp (uint64)
((wms uint8 :offset 0 :size 2)
(wmt uint8 :offset 2 :size 2)
(minu uint16 :offset 4 :size 10)
(maxu uint16 :offset 14 :size 10)
(minv uint16 :offset 24 :size 10)
(maxv uint16 :offset 34 :size 10)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gs-fog
(deftype gs-fog (uint64)
((f uint8 :offset 56 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition for method 3 of type gs-fog
(defmethod inspect gs-fog ((obj gs-fog))
(format #t "[~8x] ~A~%" obj 'gs-fog)
(format #t "~Tf: ~D~%" (-> obj f))
obj
)
;; definition of type gs-fogcol
(deftype gs-fogcol (uint64)
((fcr uint8 :offset 0 :size 8)
(fcg uint8 :offset 8 :size 8)
(fcb uint8 :offset 16 :size 8)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition for method 3 of type gs-fogcol
(defmethod inspect gs-fogcol ((obj gs-fogcol))
(format #t "[~8x] ~A~%" obj 'gs-fogcol)
(format #t "~Tr: ~D~%" (-> obj fcr))
(format #t "~Tg: ~D~%" (-> obj fcg))
(format #t "~Tb: ~D~%" (-> obj fcb))
obj
)
;; definition of type gif-ctrl
(deftype gif-ctrl (uint32)
((rst uint8 :offset 0 :size 1)
(pse uint8 :offset 3 :size 1)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-mode
(deftype gif-mode (uint32)
((m3r uint8 :offset 0 :size 1)
(imt uint8 :offset 2 :size 1)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-stat
(deftype gif-stat (uint32)
((m3r uint8 :offset 0 :size 1)
(m3p uint8 :offset 1 :size 1)
(imt uint8 :offset 2 :size 1)
(pse uint8 :offset 3 :size 1)
(ip3 uint8 :offset 5 :size 1)
(p3q uint8 :offset 6 :size 1)
(p2q uint8 :offset 7 :size 1)
(p1q uint8 :offset 8 :size 1)
(oph uint8 :offset 9 :size 1)
(apath uint8 :offset 10 :size 2)
(dir uint8 :offset 12 :size 1)
(fqc uint8 :offset 24 :size 5)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-cnt
(deftype gif-cnt (uint32)
((loopcnt uint16 :offset 0 :size 15)
(regcnt uint8 :offset 16 :size 4)
(vuaddr uint16 :offset 20 :size 10)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-p3cnt
(deftype gif-p3cnt (uint32)
((p3cnt uint16 :offset 0 :size 15)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-p3tag
(deftype gif-p3tag (uint32)
((loopcnt uint16 :offset 0 :size 15)
(eop uint8 :offset 15 :size 1)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-bank
(deftype gif-bank (structure)
((ctrl gif-ctrl :offset 0)
(mode gif-mode :offset 16)
(stat gif-stat :offset 32)
(tag0 uint32 :offset 64)
(tag1 uint32 :offset 80)
(tag2 uint32 :offset 96)
(tag3 uint32 :offset 112)
(cnt gif-cnt :offset 128)
(p3cnt gif-p3cnt :offset 144)
(p3tag gif-p3tag :offset 160)
)
:method-count-assert 9
:size-assert #xa4
:flag-assert #x9000000a4
)
;; definition for method 3 of type gif-bank
(defmethod inspect gif-bank ((obj gif-bank))
(format #t "[~8x] ~A~%" obj 'gif-bank)
(format #t "~Tctrl: #x~X~%" (-> obj ctrl))
(format #t "~Tmode: #x~X~%" (-> obj mode))
(format #t "~Tstat: #x~X~%" (-> obj stat))
(format #t "~Ttag0: #x~X~%" (-> obj tag0))
(format #t "~Ttag1: #x~X~%" (-> obj tag1))
(format #t "~Ttag2: #x~X~%" (-> obj tag2))
(format #t "~Ttag3: #x~X~%" (-> obj tag3))
(format #t "~Tcnt: #x~X~%" (-> obj cnt))
(format #t "~Tp3cnt: #x~X~%" (-> obj p3cnt))
(format #t "~Tp3tag: #x~X~%" (-> obj p3tag))
obj
)
;; definition of type gif-tag-prim
(deftype gif-tag-prim (uint32)
()
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-tag-count
(deftype gif-tag-count (uint32)
()
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition of type gif-tag64
(deftype gif-tag64 (uint64)
((nloop uint16 :offset 0 :size 15)
(eop uint8 :offset 15 :size 1)
(id uint16 :offset 32 :size 14)
(pre uint8 :offset 46 :size 1)
(prim uint16 :offset 47 :size 11)
(flg uint8 :offset 58 :size 2)
(nreg uint8 :offset 60 :size 4)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition of type gif-tag
(deftype gif-tag (uint128)
((nloop uint16 :offset 0 :size 15)
(eop uint8 :offset 15 :size 1)
(id uint16 :offset 32 :size 14)
(pre uint8 :offset 46 :size 1)
(prim uint16 :offset 47 :size 11)
(flg uint8 :offset 58 :size 2)
(nreg uint8 :offset 60 :size 4)
(regs0 uint8 :offset 64 :size 4)
(regs1 uint8 :offset 68 :size 4)
(regs2 uint8 :offset 72 :size 4)
(regs3 uint8 :offset 76 :size 4)
(regs4 uint8 :offset 80 :size 4)
(regs5 uint8 :offset 84 :size 4)
(regs6 uint8 :offset 88 :size 4)
(regs7 uint8 :offset 92 :size 4)
(regs8 uint8 :offset 96 :size 4)
(regs9 uint8 :offset 100 :size 4)
(regs10 uint8 :offset 104 :size 4)
(regs11 uint8 :offset 108 :size 4)
(regs12 uint8 :offset 112 :size 4)
(regs13 uint8 :offset 116 :size 4)
(regs14 uint8 :offset 120 :size 4)
(regs15 uint8 :offset 124 :size 4)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
;; definition of type gs-gif-tag
(deftype gs-gif-tag (structure)
((qword uint128 :offset-assert 0)
(tag gif-tag64 :offset 0)
(regs gif-tag-regs :offset 8)
(dword uint64 2 :offset 0)
(word uint32 4 :offset 0)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
;; definition for method 3 of type gs-gif-tag
(defmethod inspect gs-gif-tag ((obj gs-gif-tag))
(format #t "[~8x] ~A~%" obj 'gs-gif-tag)
(format #t "~Tqword: #<qword @ #x~X>~%" (&-> obj qword))
(format #t "~Tdword[2] @ #x~X~%" (&-> obj qword))
(format #t "~Tword[4] @ #x~X~%" (&-> obj qword))
(format #t "~Ttag: ~D~%" (-> obj tag))
(format #t "~Tregs: ~D~%" (-> obj regs))
obj
)
;; definition for method 3 of type gif-tag
;; INFO: Return type mismatch object vs gif-tag.
;; WARN: Unsupported inline assembly instruction kind - [por gp, a0, r0]
;; WARN: Unsupported inline assembly instruction kind - [por a2, gp, r0]
;; WARN: Unsupported inline assembly instruction kind - [srl a2, v1, 28]
(defmethod inspect gif-tag ((obj gif-tag))
(local-vars
(r0-0 none)
(v1-6 uint128)
(v1-8 uint128)
(v1-10 uint128)
(v1-12 uint128)
(v1-14 uint128)
(v1-16 uint128)
(v1-18 uint128)
(v1-20 uint128)
(v1-21 uint128)
(v1-23 uint128)
(v1-25 uint128)
(v1-27 uint128)
(v1-29 uint128)
(v1-31 uint128)
(v1-33 uint128)
(v1-35 uint128)
(a2-0 uint128)
(a2-15 uint128)
(gp-0 uint128)
)
(.por gp-0 obj r0-0)
(let ((t9-0 format)
(a0-1 #t)
(a1-0 "[~8x] gif-tag~%")
)
(.por a2-0 gp-0 r0-0)
(t9-0 a0-1 a1-0 a2-0)
)
(format #t "~Tnloop: ~4d~%" (shr (shl (the-as int gp-0) 49) 49))
(format #t "~Teop : ~4d~%" (shr (shl (the-as int gp-0) 48) 63))
(format #t "~Tid : ~4d~%" (shr (shl (the-as int gp-0) 18) 50))
(format #t "~Tpre : ~4d~%" (shr (shl (the-as int gp-0) 17) 63))
(format #t "~Tprim : ~4d~%" (shr (shl (the-as int gp-0) 6) 53))
(format #t "~Tflg : ~4d~%" (shr (shl (the-as int gp-0) 4) 62))
(format #t "~Tnreg : ~4d~%" (shr (the-as int gp-0) 60))
(let ((t9-8 format)
(a0-9 #t)
(a1-8 "~Tregs0 : ~4d~%")
)
(.pcpyud v1-6 gp-0 r0-0)
(t9-8 a0-9 a1-8 (shr (shl (the-as int v1-6) 60) 60))
)
(let ((t9-9 format)
(a0-10 #t)
(a1-9 "~Tregs1 : ~4d~%")
)
(.pcpyud v1-8 gp-0 r0-0)
(t9-9 a0-10 a1-9 (shr (shl (the-as int v1-8) 56) 60))
)
(let ((t9-10 format)
(a0-11 #t)
(a1-10 "~Tregs2 : ~4d~%")
)
(.pcpyud v1-10 gp-0 r0-0)
(t9-10 a0-11 a1-10 (shr (shl (the-as int v1-10) 52) 60))
)
(let ((t9-11 format)
(a0-12 #t)
(a1-11 "~Tregs3 : ~4d~%")
)
(.pcpyud v1-12 gp-0 r0-0)
(t9-11 a0-12 a1-11 (shr (shl (the-as int v1-12) 48) 60))
)
(let ((t9-12 format)
(a0-13 #t)
(a1-12 "~Tregs4 : ~4d~%")
)
(.pcpyud v1-14 gp-0 r0-0)
(t9-12 a0-13 a1-12 (shr (shl (the-as int v1-14) 44) 60))
)
(let ((t9-13 format)
(a0-14 #t)
(a1-13 "~Tregs5 : ~4d~%")
)
(.pcpyud v1-16 gp-0 r0-0)
(t9-13 a0-14 a1-13 (shr (shl (the-as int v1-16) 40) 60))
)
(let ((t9-14 format)
(a0-15 #t)
(a1-14 "~Tregs6 : ~4d~%")
)
(.pcpyud v1-18 gp-0 r0-0)
(t9-14 a0-15 a1-14 (shr (shl (the-as int v1-18) 36) 60))
)
(let ((t9-15 format)
(a0-16 #t)
(a1-15 "~Tregs7 : ~4d~%")
)
(.pcpyud v1-20 gp-0 r0-0)
(.srl a2-15 v1-20 28)
(t9-15 a0-16 a1-15 a2-15)
)
(let ((t9-16 format)
(a0-17 #t)
(a1-16 "~Tregs8 : ~4d~%")
)
(.pcpyud v1-21 gp-0 r0-0)
(t9-16 a0-17 a1-16 (shr (shl (the-as int v1-21) 28) 60))
)
(let ((t9-17 format)
(a0-18 #t)
(a1-17 "~Tregs9 : ~4d~%")
)
(.pcpyud v1-23 gp-0 r0-0)
(t9-17 a0-18 a1-17 (shr (shl (the-as int v1-23) 24) 60))
)
(let ((t9-18 format)
(a0-19 #t)
(a1-18 "~Tregs10: ~4d~%")
)
(.pcpyud v1-25 gp-0 r0-0)
(t9-18 a0-19 a1-18 (shr (shl (the-as int v1-25) 20) 60))
)
(let ((t9-19 format)
(a0-20 #t)
(a1-19 "~Tregs11: ~4d~%")
)
(.pcpyud v1-27 gp-0 r0-0)
(t9-19 a0-20 a1-19 (shr (shl (the-as int v1-27) 16) 60))
)
(let ((t9-20 format)
(a0-21 #t)
(a1-20 "~Tregs12: ~4d~%")
)
(.pcpyud v1-29 gp-0 r0-0)
(t9-20 a0-21 a1-20 (shr (shl (the-as int v1-29) 12) 60))
)
(let ((t9-21 format)
(a0-22 #t)
(a1-21 "~Tregs13: ~4d~%")
)
(.pcpyud v1-31 gp-0 r0-0)
(t9-21 a0-22 a1-21 (shr (shl (the-as int v1-31) 8) 60))
)
(let ((t9-22 format)
(a0-23 #t)
(a1-22 "~Tregs14: ~4d~%")
)
(.pcpyud v1-33 gp-0 r0-0)
(t9-22 a0-23 a1-22 (shr (shl (the-as int v1-33) 4) 60))
)
(let ((t9-23 format)
(a0-24 #t)
(a1-23 "~Tregs15: ~4d~%")
)
(.pcpyud v1-35 gp-0 r0-0)
(the-as gif-tag (t9-23 a0-24 a1-23 (shr (the-as int v1-35) 60)))
)
)
;; definition for symbol *fog-color*, type int
(define *fog-color* #xc88029)
;; definition for symbol *default-regs-buffer*, type dma-buffer
(define *default-regs-buffer* (new 'global 'dma-buffer 1024))
;; definition for function default-buffer-init
;; INFO: Return type mismatch pointer vs none.
(defun default-buffer-init ((buff dma-buffer))
(let ((buff-ptr buff))
(set! (-> buff-ptr base) (-> buff-ptr data))
(set!
(-> buff-ptr end)
(&-> buff-ptr data-buffer (-> buff-ptr allocated-length))
)
)
(let* ((buff-ptr2 buff)
(packet (the-as dma-gif-packet (-> buff-ptr2 base)))
)
(set!
(-> packet dma-vif dma)
(new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt))
)
(set!
(-> packet dma-vif vif0)
(new 'static 'vif-tag :cmd (vif-cmd flusha) :msk #x1)
)
(set!
(-> packet dma-vif vif1)
(new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1)
)
(set! (-> buff-ptr2 base) (&+ (the-as pointer packet) 16))
)
(let* ((buff-ptr5 buff)
(gif-tag (the-as gs-gif-tag (-> buff-ptr5 base)))
)
(set!
(-> gif-tag tag)
(the-as gif-tag64 (new 'static 'gif-tag64 :nloop #x1 :eop #x1 :nreg #x9))
)
(set!
(-> gif-tag regs)
(new 'static 'gif-tag-regs
:regs0 (gs-reg-id a+d)
:regs1 (gs-reg-id a+d)
:regs2 (gs-reg-id a+d)
:regs3 (gs-reg-id a+d)
:regs4 (gs-reg-id a+d)
:regs5 (gs-reg-id a+d)
:regs6 (gs-reg-id a+d)
:regs7 (gs-reg-id a+d)
:regs8 (gs-reg-id a+d)
:regs9 (gs-reg-id a+d)
:regs10 (gs-reg-id a+d)
:regs11 (gs-reg-id a+d)
:regs12 (gs-reg-id a+d)
:regs13 (gs-reg-id a+d)
:regs14 (gs-reg-id a+d)
:regs15 (gs-reg-id a+d)
)
)
(set! (-> buff-ptr5 base) (&+ (the-as pointer gif-tag) 16))
)
(let* ((buff-ptr3 buff)
(data (the-as (pointer uint64) (-> buff-ptr3 base)))
)
(set! (-> data 0) (the-as uint 68))
(set! (-> data 1) (the-as uint 66))
(set! (-> data 2) (the-as uint #x10001c0))
(set! (-> data 3) (the-as uint 78))
(set! (-> data 4) (the-as uint #x5000e))
(set! (-> data 5) (the-as uint 71))
(set! (-> data 6) (the-as uint 0))
(set! (-> data 7) (the-as uint 73))
(set! (-> data 8) (the-as uint 5))
(set! (-> data 9) (the-as uint 8))
(set! (-> data 10) (the-as uint 96))
(set! (-> data 11) (the-as uint 20))
(set! (-> data 12) (the-as uint (shl 128 32)))
(set! (-> data 13) (the-as uint 59))
(set! (-> data 14) (the-as uint 4))
(set! (-> data 15) (the-as uint 28))
(set! (-> data 16) (the-as uint *fog-color*))
(set! (-> data 17) (the-as uint 61))
(set! (-> buff-ptr3 base) (&+ (the-as pointer data) 144))
)
(let* ((buff-ptr4 buff)
(ret-packet (the-as dma-packet (-> buff-ptr4 base)))
)
(set! (-> ret-packet dma) (new 'static 'dma-tag :id (dma-tag-id ret)))
(set! (-> ret-packet vif0) (new 'static 'vif-tag))
(set! (-> ret-packet vif1) (new 'static 'vif-tag))
(set! (-> buff-ptr4 base) (&+ (the-as pointer ret-packet) 16))
)
(none)
)
;; failed to figure out what this is:
(default-buffer-init *default-regs-buffer*)
;; definition of type gif-packet
(deftype gif-packet (basic)
((reg-count int32 :offset-assert 4)
(gif-tag gs-gif-tag :inline :offset-assert 16)
(gif-tag0 uint128 :offset 16)
(args uint64 1 :offset-assert 32)
)
:method-count-assert 9
:size-assert #x28
:flag-assert #x900000028
(:methods
(new (symbol type int) _type_ 0)
)
)
;; definition for method 3 of type gif-packet
;; Used lq/sq
(defmethod inspect gif-packet ((obj gif-packet))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Treg-count: ~D~%" (-> obj reg-count))
(format #t "~Tgif-tag0: #x~X~%" (-> obj gif-tag qword))
(format #t "~Targs[1] @ #x~X~%" (-> obj args))
obj
)
;; definition for method 0 of type gif-packet
(defmethod new gif-packet ((allocation symbol) (type-to-make type) (arg0 int))
(object-new
allocation
type-to-make
(the-as int (+ (-> type-to-make size) (the-as uint (shl (+ arg0 -1) 3))))
)
)
;; definition for function open-gif-packet
(defun open-gif-packet ((arg0 gif-packet))
(set! (-> arg0 reg-count) 0)
(set! (-> arg0 gif-tag regs) (new 'static 'gif-tag-regs))
arg0
)
;; definition for function add-reg-gif-packet
;; INFO: Return type mismatch gif-packet vs none.
(defun add-reg-gif-packet ((packet gif-packet) (reg-idx int) (reg-val int))
(let ((tag (-> packet gif-tag)))
(set!
(-> tag regs)
(logior
(-> tag regs)
(the-as uint (ash reg-idx (shl (-> packet reg-count) 2)))
)
)
)
(set! (-> (&-> packet args (-> packet reg-count)) 0) (the-as uint reg-val))
(set! (-> packet reg-count) (+ (-> packet reg-count) 1))
(none)
)
;; definition for function close-gif-packet
(defun close-gif-packet ((arg0 gif-packet) (arg1 int))
(set!
(-> arg0 gif-tag tag)
(new 'static 'gif-tag64
:nloop #x1
:flg #x1
:eop arg1
:nreg (-> arg0 reg-count)
)
)
arg0
)
;; definition of type draw-context
(deftype draw-context (basic)
((orgx int32 :offset-assert 4)
(orgy int32 :offset-assert 8)
(orgz int32 :offset-assert 12)
(width int32 :offset-assert 16)
(height int32 :offset-assert 20)
(color rgba 4 :offset-assert 24)
)
:method-count-assert 9
:size-assert #x28
:flag-assert #x900000028
(:methods
(new (symbol type int int int int rgba) _type_ 0)
)
)
;; definition for method 3 of type draw-context
(defmethod inspect draw-context ((obj draw-context))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Torgx: ~D~%" (-> obj orgx))
(format #t "~Torgy: ~D~%" (-> obj orgy))
(format #t "~Torgz: ~D~%" (-> obj orgz))
(format #t "~Twidth: ~D~%" (-> obj width))
(format #t "~Theight: ~D~%" (-> obj height))
(format #t "~Tcolor[4] @ #x~X~%" (-> obj color))
obj
)
;; definition for method 0 of type draw-context
(defmethod
new
draw-context
((allocation symbol)
(type-to-make type)
(org-x int)
(org-y int)
(width int)
(height int)
(color-0 rgba)
)
(let
((obj
(object-new allocation type-to-make (the-as int (-> type-to-make size)))
)
)
(let
((v1-3 (the int (* (the float org-y) (-> *video-parms* relative-y-scale))))
(a0-2 (the int (* (the float height) (-> *video-parms* relative-y-scale))))
)
(set! (-> obj orgx) org-x)
(set! (-> obj orgy) v1-3)
(set! (-> obj orgz) #xffffff)
(set! (-> obj width) width)
(set! (-> obj height) a0-2)
)
(set! (-> obj color 0) color-0)
obj
)
)
;; definition for function draw-context-set-xy
;; INFO: Return type mismatch int vs none.
(defun draw-context-set-xy ((ctxt draw-context) (x int) (y int))
(let* ((y (gpr->fpr y))
(v0-0 (the int (* (the float y) (-> *video-parms* relative-y-scale))))
)
(set! (-> ctxt orgx) x)
(set! (-> ctxt orgy) v0-0)
)
(none)
)