jak-project/goal_src/engine/gfx/texture-h.gc
water111 0a6602e320
[Decompile] connect, text-h, settings-h, capture, memory-usage-h (#410)
* decompile stuff

* temp

* temp2

* fix

* temp

* preparing for merge

* working

* fix stupid format

* fix codacy
2021-05-05 17:38:16 -04:00

241 lines
7.1 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: texture-h.gc
;; name in dgo: texture-h
;; dgos: GAME, ENGINE
(defenum tpage-kind
:type uint32
:bitfield #f
(tfrag 0)
(pris 1)
(shrub 2)
(alpha 3)
(water 4)
)
;; mask for different texture things.
;; these are the ones that will be displayed in the menu
(define *texture-enable-user-menu* #x1f)
;; enabled textures.
(define *texture-enable-user* 0)
(deftype texture-id (uint32)
((index uint16 :offset 8 :size 12)
(page uint16 :offset 20 :size 12)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
(deftype texture-pool-segment (structure)
((dest uint32 :offset-assert 0)
(size uint32 :offset-assert 4)
)
:pack-me
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
(declare-type texture-page basic)
(declare-type level basic)
(deftype texture-pool (basic)
((top int32 :offset-assert 4)
(cur int32 :offset-assert 8)
(allocate-func (function texture-pool texture-page kheap int texture-page) :offset-assert 12)
(font-palette int32 :offset-assert 16) ;; vram word idx
;; these were reordered
(segment-near texture-pool-segment :inline :offset-assert 20)
(segment-common texture-pool-segment :inline :offset-assert 28)
(segment texture-pool-segment 4 :inline :offset 20)
(common-page texture-page 32 :offset-assert 52)
(common-page-mask int32 :offset-assert 180)
(ids uint32 126 :offset-assert 184)
)
:method-count-assert 23
:size-assert #x2b0
:flag-assert #x17000002b0
(:methods
(new (symbol type) _type_ 0)
(initialize! (_type_) _type_ 9)
(print-usage (_type_) _type_ 10)
(dummy-11 (_type_) none 11)
(allocate-defaults! (_type_) none 12)
(login-level-textures (_type_ level int (pointer texture-id)) none 13) ;; loading level...
(add-tex-to-dma! (_type_ level int) none 14) ;; very mysterious arg types.
(allocate-vram-words! (_type_ int) int 15)
(allocate-segment! (_type_ texture-pool-segment int) texture-pool-segment 16)
(dummy-17 () none 17)
(dummy-18 () none 18)
(dummy-19 () none 19)
(dummy-20 () none 20)
(upload-one-common! (_type_) symbol 21)
(lookup-boot-common-id (_type_ int) int 22)
)
)
(deftype texture (basic)
((w int16 :offset-assert 4)
(h int16 :offset-assert 6)
(num-mips uint8 :offset-assert 8)
(tex1-control uint8 :offset-assert 9)
(psm gs-psm :offset-assert 10)
(mip-shift uint8 :offset-assert 11)
(clutpsm uint16 :offset-assert 12)
(dest uint16 7 :offset-assert 14)
(clutdest uint16 :offset-assert 28)
(width uint8 7 :offset-assert 30)
(name basic :offset-assert 40)
(size uint32 :offset-assert 44)
(uv-dist float :offset-assert 48)
(masks uint32 3 :offset-assert 52)
)
:method-count-assert 9
:size-assert #x40
:flag-assert #x900000040
)
(deftype texture-page-segment (structure)
((block-data pointer :offset-assert 0)
(size uint32 :offset-assert 4)
(dest uint32 :offset-assert 8)
)
:pack-me
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
)
(defun texture-mip->segment ((arg0 int) (arg1 int))
(if (>= 2 arg1) (+ (- -1 arg0) arg1) (max 0 (- 2 arg0)))
)
(deftype texture-page (basic)
((info basic :offset-assert 4)
(name basic :offset-assert 8)
(id uint32 :offset-assert 12)
(length int32 :offset-assert 16)
(mip0-size uint32 :offset-assert 20)
(size uint32 :offset-assert 24)
(segment texture-page-segment 3 :inline :offset-assert 28)
(pad uint32 16 :offset-assert 64)
(data texture :dynamic :offset-assert 128)
)
:method-count-assert 15
:size-assert #x80
:flag-assert #xf00000080
(:methods
(remove-from-heap (_type_ kheap) _type_ 9)
(get-leftover-block-count (_type_ int int) int 10)
(dummy-11 () none 11)
(relocate-dests! (_type_ int int) none 12)
(add-to-dma-buffer (_type_ dma-buffer int) none 13)
(upload-now! (_type_ int) none 14)
)
)
(deftype shader-ptr (uint32)
((shader uint32 :offset 8 :size 24))
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
(deftype texture-link (structure)
((next shader-ptr 1 :offset-assert 0)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
(deftype texture-page-dir-entry (structure)
((length int16 :offset-assert 0)
(status uint16 :offset-assert 2)
(page texture-page :offset-assert 4)
(link texture-link :offset-assert 8)
)
:pack-me
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
)
(deftype texture-page-dir (basic)
((length int32)
(entries texture-page-dir-entry 1 :inline))
(:methods
(dummy-9 () none 9)
)
:flag-assert #xa00000014
)
(deftype texture-relocate-later (basic)
((memcpy basic :offset-assert 4)
(dest uint32 :offset-assert 8)
(source uint32 :offset-assert 12)
(move uint32 :offset-assert 16)
(entry texture-page-dir-entry :offset-assert 20)
(page texture-page :offset-assert 24)
)
:method-count-assert 9
:size-assert #x1c
:flag-assert #x90000001c
)
(define *texture-relocate-later* (new 'global 'texture-relocate-later))
(set! (-> *texture-relocate-later* memcpy) #f)
(define *texture-page-dir* (the texture-page-dir #f))
(deftype adgif-shader (structure)
((quad uint128 5 :offset 0)
(prims uint64 10 :offset 0)
(tex0 uint64 :offset 0)
(tex1 uint64 :offset 16)
(miptbp1 uint64 :offset 32)
(clamp uint64 :offset 48)
(clamp-reg uint64 :offset 56)
(alpha uint64 :offset 64)
(link-test uint32 :offset 8)
(texture-id uint32 :offset 24)
(next shader-ptr :offset 40)
)
:method-count-assert 9
:size-assert #x50
:flag-assert #x900000050
)
(deftype adgif-shader-array (inline-array-class)
()
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
(set! (-> adgif-shader-array heap-base) 80)
(define *sky-base-vram-word* 0)
(define *sky-base-block* 0)
(define *sky-base-page* 0)
(define *depth-cue-base-vram-word* 0)
(define *depth-cue-base-block* 0)
(define *depth-cue-base-page* 0)
(define *eyes-base-vram-word* 0)
(define *eyes-base-block* 0)
(define *eyes-base-page* 0)
(define *ocean-base-vram-word* 0)
(define *ocean-base-block* 0)
(define *ocean-base-page* 0)
(defun-extern texture-page-default-allocate texture-pool texture-page kheap int texture-page)
(define-extern texture-page-login (function texture-id function kheap texture-page-dir-entry))
(define-extern *texture-pool* texture-pool)