Files
jak-project/test/decompiler/reference/jak2/engine/ui/bigmap-h_REF.gc
T
ManDude 6884b0f73e 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.
2023-05-04 18:34:09 -04:00

409 lines
18 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type bigmap-bit-mask
(deftype bigmap-bit-mask (structure)
((data uint8 6656 :offset-assert 0)
)
:method-count-assert 9
:size-assert #x1a00
:flag-assert #x900001a00
)
;; definition for method 3 of type bigmap-bit-mask
(defmethod inspect bigmap-bit-mask ((obj bigmap-bit-mask))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'bigmap-bit-mask)
(format #t "~1Tdata[6656] @ #x~X~%" (-> obj data))
(label cfg-4)
obj
)
;; definition of type bigmap-layer-mask
(deftype bigmap-layer-mask (structure)
((data uint8 26624 :offset-assert 0)
)
:method-count-assert 9
:size-assert #x6800
:flag-assert #x900006800
)
;; definition for method 3 of type bigmap-layer-mask
(defmethod inspect bigmap-layer-mask ((obj bigmap-layer-mask))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'bigmap-layer-mask)
(format #t "~1Tdata[26624] @ #x~X~%" (-> obj data))
(label cfg-4)
obj
)
;; definition of type bigmap-image
(deftype bigmap-image (structure)
((clut-offset uint32 :offset-assert 0)
(image-offset uint32 :offset-assert 4)
(pad uint32 2 :offset-assert 8)
(data uint8 1 :offset-assert 16)
)
:method-count-assert 9
:size-assert #x11
:flag-assert #x900000011
)
;; definition for method 3 of type bigmap-image
(defmethod inspect bigmap-image ((obj bigmap-image))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'bigmap-image)
(format #t "~1Tclut-offset: ~D~%" (-> obj clut-offset))
(format #t "~1Timage-offset: ~D~%" (-> obj image-offset))
(format #t "~1Tpad[2] @ #x~X~%" (-> obj pad))
(format #t "~1Tdata[1] @ #x~X~%" (-> obj data))
(label cfg-4)
obj
)
;; definition of type bigmap-info
(deftype bigmap-info (vector)
((scale float :offset 8)
(inv-scale float :offset 12)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
;; definition for method 3 of type bigmap-info
;; INFO: Used lq/sq
(defmethod inspect bigmap-info ((obj bigmap-info))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'bigmap-info)
(format #t "~1Tdata[4] @ #x~X~%" (&-> obj x))
(format #t "~1Tx: ~f~%" (-> obj x))
(format #t "~1Ty: ~f~%" (-> obj y))
(format #t "~1Tz: ~f~%" (-> obj scale))
(format #t "~1Tw: ~f~%" (-> obj inv-scale))
(format #t "~1Tquad: ~D~%" (-> obj quad))
(format #t "~1Tscale: ~f~%" (-> obj scale))
(format #t "~1Tinv-scale: ~f~%" (-> obj inv-scale))
(label cfg-4)
obj
)
;; definition of type bigmap-info-array
(deftype bigmap-info-array (structure)
((data bigmap-info 21 :inline :offset-assert 0)
)
:method-count-assert 9
:size-assert #x150
:flag-assert #x900000150
)
;; definition for method 3 of type bigmap-info-array
(defmethod inspect bigmap-info-array ((obj bigmap-info-array))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'bigmap-info-array)
(format #t "~1Tdata[21] @ #x~X~%" (-> obj data))
(label cfg-4)
obj
)
;; definition of type bigmap-compressed-layers
(deftype bigmap-compressed-layers (structure)
((data (pointer uint32) 20 :offset-assert 0)
(layer0 (pointer uint32) :offset 0)
(layer1 (pointer uint32) :offset 4)
(layer2 (pointer uint32) :offset 8)
(layer3 (pointer uint32) :offset 12)
(layer4 (pointer uint32) :offset 16)
(layer5 (pointer uint32) :offset 20)
(layer6 (pointer uint32) :offset 24)
(layer7 (pointer uint32) :offset 28)
(layer8 (pointer uint32) :offset 32)
(layer9 (pointer uint32) :offset 36)
(layer10 (pointer uint32) :offset 40)
(layer11 (pointer uint32) :offset 44)
(layer12 (pointer uint32) :offset 48)
(layer13 (pointer uint32) :offset 52)
(layer14 (pointer uint32) :offset 56)
(layer15 (pointer uint32) :offset 60)
(layer16 (pointer uint32) :offset 64)
(layer17 (pointer uint32) :offset 68)
(layer18 (pointer uint32) :offset 72)
(layer19 (pointer uint32) :offset 76)
)
:method-count-assert 9
:size-assert #x50
:flag-assert #x900000050
)
;; definition for method 3 of type bigmap-compressed-layers
(defmethod inspect bigmap-compressed-layers ((obj bigmap-compressed-layers))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj 'bigmap-compressed-layers)
(format #t "~1Tdata[20] @ #x~X~%" (&-> obj layer0))
(format #t "~1Tlayer0: #x~X~%" (-> obj layer0))
(format #t "~1Tlayer1: #x~X~%" (-> obj layer1))
(format #t "~1Tlayer2: #x~X~%" (-> obj layer2))
(format #t "~1Tlayer3: #x~X~%" (-> obj layer3))
(format #t "~1Tlayer4: #x~X~%" (-> obj layer4))
(format #t "~1Tlayer5: #x~X~%" (-> obj layer5))
(format #t "~1Tlayer6: #x~X~%" (-> obj layer6))
(format #t "~1Tlayer7: #x~X~%" (-> obj layer7))
(format #t "~1Tlayer8: #x~X~%" (-> obj layer8))
(format #t "~1Tlayer9: #x~X~%" (-> obj layer9))
(format #t "~1Tlayer10: #x~X~%" (-> obj layer10))
(format #t "~1Tlayer11: #x~X~%" (-> obj layer11))
(format #t "~1Tlayer12: #x~X~%" (-> obj layer12))
(format #t "~1Tlayer13: #x~X~%" (-> obj layer13))
(format #t "~1Tlayer14: #x~X~%" (-> obj layer14))
(format #t "~1Tlayer15: #x~X~%" (-> obj layer15))
(format #t "~1Tlayer16: #x~X~%" (-> obj layer16))
(format #t "~1Tlayer17: #x~X~%" (-> obj layer17))
(format #t "~1Tlayer18: #x~X~%" (-> obj layer18))
(format #t "~1Tlayer19: #x~X~%" (-> obj layer19))
(label cfg-4)
obj
)
;; definition of type bigmap
(deftype bigmap (basic)
((drawing-flag symbol :offset-assert 4)
(loading-flag symbol :offset-assert 8)
(recording-flag symbol :offset-assert 12)
(fill-flag symbol :offset-assert 16)
(bigmap-index uint32 :offset-assert 20)
(bigmap-image external-art-buffer :offset-assert 24)
(tpage external-art-buffer :offset-assert 28)
(progress-minimap texture-page :offset-assert 32)
(mask-index uint32 :offset-assert 36)
(bit-mask bigmap-bit-mask :offset-assert 40)
(compressed-next-index uint32 :offset-assert 44)
(max-next-index uint32 :offset-assert 48)
(compressed-masks (pointer int8) 20 :offset-assert 52)
(compressed-data uint32 :offset-assert 132)
(layer-index uint32 :offset-assert 136)
(layer-mask bigmap-layer-mask :offset-assert 140)
(compressed-layers bigmap-compressed-layers :offset-assert 144)
(layer-mask-enable uint32 :offset-assert 148)
(load-index uint32 :offset-assert 152)
(x0 int32 :offset-assert 156)
(y0 int32 :offset-assert 160)
(x1 int32 :offset-assert 164)
(y1 int32 :offset-assert 168)
(y2 int32 :offset-assert 172)
(goal-time float :offset-assert 176)
(sprite-tmpl dma-gif-packet :inline :offset-assert 192)
(draw-tmpl dma-gif-packet :inline :offset-assert 224)
(adgif-tmpl dma-gif-packet :inline :offset-assert 256)
(offset vector :inline :offset-assert 288)
(size float :offset 296)
(scale float :offset 300)
(draw-offset vector :inline :offset-assert 304)
(draw-size float :offset 312)
(draw-scale float :offset 316)
(scroll vector :inline :offset-assert 320)
(pos vector4w :inline :offset-assert 336)
(color vector4w :inline :offset-assert 352)
(corner vector 4 :inline :offset-assert 368)
(auto-save-icon-flag symbol :offset-assert 432)
)
:method-count-assert 28
:size-assert #x1b4
:flag-assert #x1c000001b4
(:methods
(new (symbol type) _type_ 0)
(initialize (_type_) none 9)
(update (_type_) none 10)
(bigmap-method-11 (_type_ int int int int) int 11)
(bigmap-method-12 (_type_) int 12)
(bigmap-method-13 (_type_) int 13)
(bigmap-method-14 (_type_) none 14)
(bigmap-method-15 (_type_) int 15)
(dump-to-file (_type_) file-stream 16)
(bigmap-method-17 (_type_ vector) int 17)
(bigmap-method-18 (_type_) int 18)
(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 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)
(bigmap-method-26 (_type_ dma-buffer int int int int) none 26)
(bigmap-method-27 (_type_ dma-buffer connection-minimap) int 27)
)
)
;; definition for method 3 of type bigmap
(defmethod inspect bigmap ((obj bigmap))
(when (not obj)
(set! obj obj)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~1Tdrawing-flag: ~A~%" (-> obj drawing-flag))
(format #t "~1Tloading-flag: ~A~%" (-> obj loading-flag))
(format #t "~1Trecording-flag: ~A~%" (-> obj recording-flag))
(format #t "~1Tfill-flag: ~A~%" (-> obj fill-flag))
(format #t "~1Tbigmap-index: ~D~%" (-> obj bigmap-index))
(format #t "~1Tbigmap-image: ~A~%" (-> obj bigmap-image))
(format #t "~1Ttpage: ~A~%" (-> obj tpage))
(format #t "~1Tprogress-minimap: ~A~%" (-> obj progress-minimap))
(format #t "~1Tmask-index: ~D~%" (-> obj mask-index))
(format #t "~1Tbit-mask: #<bigmap-bit-mask @ #x~X>~%" (-> obj bit-mask))
(format #t "~1Tcompressed-next-index: ~D~%" (-> obj compressed-next-index))
(format #t "~1Tmax-next-index: ~D~%" (-> obj max-next-index))
(format #t "~1Tcompressed-masks[20] @ #x~X~%" (-> obj compressed-masks))
(format #t "~1Tcompressed-data: #x~X~%" (-> obj compressed-data))
(format #t "~1Tlayer-index: ~D~%" (-> obj layer-index))
(format #t "~1Tlayer-mask: #<bigmap-layer-mask @ #x~X>~%" (-> obj layer-mask))
(format #t "~1Tcompressed-layers: #<bigmap-compressed-layers @ #x~X>~%" (-> obj compressed-layers))
(format #t "~1Tlayer-mask-enable: ~D~%" (-> obj layer-mask-enable))
(format #t "~1Tload-index: ~D~%" (-> obj load-index))
(format #t "~1Tx0: ~D~%" (-> obj x0))
(format #t "~1Ty0: ~D~%" (-> obj y0))
(format #t "~1Tx1: ~D~%" (-> obj x1))
(format #t "~1Ty1: ~D~%" (-> obj y1))
(format #t "~1Ty2: ~D~%" (-> obj y2))
(format #t "~1Tgoal-time: ~f~%" (-> obj goal-time))
(format #t "~1Tsprite-tmpl: #<dma-gif-packet @ #x~X>~%" (-> obj sprite-tmpl))
(format #t "~1Tdraw-tmpl: #<dma-gif-packet @ #x~X>~%" (-> obj draw-tmpl))
(format #t "~1Tadgif-tmpl: #<dma-gif-packet @ #x~X>~%" (-> obj adgif-tmpl))
(format #t "~1Toffset: #<vector @ #x~X>~%" (-> obj offset))
(format #t "~1Tsize: ~f~%" (-> obj offset z))
(format #t "~1Tscale: ~f~%" (-> obj offset w))
(format #t "~1Tdraw-offset: #<vector @ #x~X>~%" (-> obj draw-offset))
(format #t "~1Tdraw-size: ~f~%" (-> obj draw-offset z))
(format #t "~1Tdraw-scale: ~f~%" (-> obj draw-offset w))
(format #t "~1Tscroll: #<vector @ #x~X>~%" (-> obj scroll))
(format #t "~1Tpos: #<vector4w @ #x~X>~%" (-> obj pos))
(format #t "~1Tcolor: #<vector4w @ #x~X>~%" (-> obj color))
(format #t "~1Tcorner[4] @ #x~X~%" (-> obj corner))
(format #t "~1Tauto-save-icon-flag: ~A~%" (-> obj auto-save-icon-flag))
(label cfg-4)
obj
)
;; definition for method 0 of type bigmap
(defmethod new bigmap ((allocation symbol) (type-to-make type))
(let ((gp-0 (object-new allocation type-to-make (the-as int (-> type-to-make size)))))
(set! (-> gp-0 bigmap-image)
((method-of-type external-art-buffer new)
allocation
external-art-buffer
0
(lambda ((arg0 external-art-buffer))
(let ((a1-3 (logand -64 (&+ (&+ (-> *display* frames 0 global-buf end) -430144) 63)))
(v1-1 (-> arg0 heap))
)
(set! (-> v1-1 base) a1-3)
(set! (-> v1-1 current) (-> v1-1 base))
(set! (-> v1-1 top-base) (&+ (-> v1-1 base) #x69000))
(set! (-> v1-1 top) (-> v1-1 top-base))
)
0
(none)
)
#f
)
)
(set! (-> gp-0 tpage)
((method-of-type external-art-buffer new)
allocation
external-art-buffer
0
(lambda ((arg0 external-art-buffer))
(let ((a1-3 (logand -64 (&+ (&+ (-> *display* frames 0 global-buf end) -774208) 63)))
(v1-1 (-> arg0 heap))
)
(set! (-> v1-1 base) a1-3)
(set! (-> v1-1 current) (-> v1-1 base))
(set! (-> v1-1 top-base) (&+ (-> v1-1 base) #xbd000))
(set! (-> v1-1 top) (-> v1-1 top-base))
)
0
(none)
)
#f
)
)
(set! (-> gp-0 bit-mask) (new 'global 'bigmap-bit-mask))
(set! (-> gp-0 compressed-data) (the-as uint (malloc 'global #x8000)))
(set! (-> gp-0 layer-mask) (new 'global 'bigmap-layer-mask))
(set! (-> gp-0 compressed-layers) *bigmap-compressed-layers*)
(set! (-> gp-0 sprite-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
(set! (-> gp-0 sprite-tmpl dma-vif vif0) (new 'static 'vif-tag))
(set! (-> gp-0 sprite-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
(set! (-> gp-0 sprite-tmpl gif0) (the-as uint #x50ab400000008001))
(set! (-> gp-0 sprite-tmpl gif1) (the-as uint #x53531))
(set! (-> gp-0 draw-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #xa :id (dma-tag-id cnt)))
(set! (-> gp-0 draw-tmpl dma-vif vif0) (new 'static 'vif-tag))
(set! (-> gp-0 draw-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #xa :cmd (vif-cmd direct) :msk #x1))
(set! (-> gp-0 draw-tmpl gif0) (the-as uint #x90aa400000008001))
(set! (-> gp-0 draw-tmpl gif1) (the-as uint #x535353531))
(set! (-> gp-0 adgif-tmpl dma-vif dma) (new 'static 'dma-tag :qwc #x6 :id (dma-tag-id cnt)))
(set! (-> gp-0 adgif-tmpl dma-vif vif0) (new 'static 'vif-tag))
(set! (-> gp-0 adgif-tmpl dma-vif vif1) (new 'static 'vif-tag :imm #x6 :cmd (vif-cmd direct) :msk #x1))
(set! (-> gp-0 adgif-tmpl gif0) (the-as uint #x1000000000008005))
(set! (-> gp-0 adgif-tmpl gif1) (the-as uint 14))
(set-vector! (-> gp-0 offset) 0.0 0.0 0.0 0.0)
(set-vector! (-> gp-0 scroll) 0.0 0.0 0.0 0.0)
(set-vector! (-> gp-0 pos) 0 0 0 0)
(set-vector! (-> gp-0 color) 128 128 128 128)
(set! (-> gp-0 drawing-flag) #f)
(set! (-> gp-0 loading-flag) #f)
(set! (-> gp-0 recording-flag) #f)
(set! (-> gp-0 fill-flag) #t)
(set! (-> gp-0 progress-minimap) #f)
(set! (-> gp-0 auto-save-icon-flag) #f)
(initialize gp-0)
gp-0
)
)
;; definition for symbol *bigmap-info-array*, type bigmap-info-array
(define *bigmap-info-array*
(new 'static 'bigmap-info-array
:data (new 'static 'inline-array bigmap-info 21
(new 'static 'bigmap-info :x -251215.88 :y -6390620.0 :scale 7477.334 :inv-scale 0.00006686875)
(new 'static 'bigmap-info :x -68266.805 :y -7629693.0 :scale 4266.668 :inv-scale 0.00011718746)
(new 'static 'bigmap-info :x -1612460.0 :y -7806484.5 :scale 3498.668 :inv-scale 0.00014291154)
(new 'static 'bigmap-info :x 339968.0 :y -8220672.0 :scale 3200.0 :inv-scale 0.00015625)
(new 'static 'bigmap-info :x -602935.3 :y -9531720.0 :scale 6933.332 :inv-scale 0.0000721154)
(new 'static 'bigmap-info :x -1565331.5 :y -1109332.0 :scale 5337.4277 :inv-scale 0.000093678085)
(new 'static 'bigmap-info :x -3681067.0 :y 2179413.2 :scale 4586.668 :inv-scale 0.0001090116)
(new 'static 'bigmap-info :x 1110016.0 :y -20480.0 :scale 4096.0 :inv-scale 0.00012207031)
(new 'static 'bigmap-info :x -4358144.0 :y -581632.0 :scale 5469.09 :inv-scale 0.00009142289)
(new 'static 'bigmap-info :x -1646719.0 :y -1395200.0 :scale 4000.002 :inv-scale 0.00012499993)
(new 'static 'bigmap-info :x -1292161.0 :y -935251.94 :scale 7253.332 :inv-scale 0.000068933834)
(new 'static 'bigmap-info :x -87520.055 :y 1879040.0 :scale 2880.0 :inv-scale 0.00017361112)
(new 'static 'bigmap-info :x -87520.055 :y 1879040.0 :scale 2880.0 :inv-scale 0.00017361112)
(new 'static 'bigmap-info :x 3053472.2 :y -2397868.0 :scale 3946.668 :inv-scale 0.00012668915)
(new 'static 'bigmap-info :x 4027306.8 :y 1112746.8 :scale 4693.332 :inv-scale 0.00010653412)
(new 'static 'bigmap-info :x 4027306.8 :y 1112746.8 :scale 4693.332 :inv-scale 0.00010653412)
(new 'static 'bigmap-info :x 4027306.8 :y 1112746.8 :scale 4693.332 :inv-scale 0.00010653412)
(new 'static 'bigmap-info :x 8574157.0 :y -1033420.8 :scale 5430.231 :inv-scale 0.00009207711)
(new 'static 'bigmap-info :x -787795.94 :y 4102697.0 :scale 5717.332 :inv-scale 0.00008745338)
(new 'static 'bigmap-info :x -1558401.0 :y 6746452.0 :scale 5866.668 :inv-scale 0.00008522726)
(new 'static 'bigmap-info)
)
)
)