Files
jak-project/goal_src/jakx/engine/gfx/texture/texture-h.gc
T
2026-05-08 18:54:05 -04:00

1409 lines
70 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: texture-h.gc
;; name in dgo: texture-h
;; dgos: ENGINE, GAME
(declare-type texture-page basic)
(declare-type texture-pool basic)
(declare-type fog-texture-work structure)
(declare-type adgif-shader structure)
(declare-type texture basic)
(declare-type texture-id uint32)
(declare-type texture-anim-array array)
(declare-type texture-anim structure)
(define-extern adgif-shader<-texture-simple! (function adgif-shader texture adgif-shader))
(define-extern lookup-texture-by-id-fast (function texture-id texture))
(define-extern *edit-shader* texture-id)
(define-extern adgif-shader-update! (function adgif-shader texture none))
(declare-type texture-page-dir basic)
(define-extern texture-page-dir-inspect (function texture-page-dir symbol none))
(define-extern *texture-pool* texture-pool)
(define-extern *fog-texture-work* fog-texture-work)
(define-extern *skull-gem-texture-anim-array* (texture-anim-array texture-anim))
;; +++tex-upload-mode
(defenum tex-upload-mode
(none -3)
(seg0-1 -2)
(seg0-1-2 -1)
(seg0 0)
(seg2 2)
)
;; ---tex-upload-mode
;; +++link-test-flags
(defenum link-test-flags
:type uint32
:bitfield #t
(needs-log-in 8)
(bit-9 9)
(backup-sprite-tex 10) ;; set when particle-setup-adgif fails texture lookup.
)
;; ---link-test-flags
;; DECOMP BEGINS
(deftype texture-id (uint32)
"Unique identifier for a texture
as the tpage number and index of the texture within the tpage."
((index uint16 :offset 8 :size 12)
(page uint16 :offset 20 :size 12)
)
)
(deftype texture-pool-segment (structure)
"A chunk of VRAM."
((dest uint32)
(size uint32)
)
:pack-me
:allow-misaligned
)
(deftype texture-pool (basic)
"The manager for the VRAM."
((top int32)
(cur int32)
(allocate-func (function texture-pool texture-page kheap int texture-page))
(font-palette int32)
(segment texture-pool-segment 4 :inline)
(segment-near texture-pool-segment :inline :overlay-at (-> segment 0))
(segment-common texture-pool-segment :inline :overlay-at (-> segment 1))
(common-page texture-page 32)
(common-page-mask int32)
(update-sprites-flag symbol)
(update-flag symbol)
(texture-enable-user texture-enable-mask)
(texture-enable-user-menu texture-enable-mask)
(ids uint32 128)
)
(:methods
(new (symbol type) _type_)
(texture-pool-method-9 () none)
(texture-pool-method-10 () none)
(texture-pool-method-11 () none)
(texture-pool-method-12 () none)
(texture-pool-method-13 () none)
(texture-pool-method-14 () none)
(texture-pool-method-15 () none)
(texture-pool-method-16 () none)
(texture-pool-method-17 () none)
(texture-pool-method-18 () none)
(texture-pool-method-19 () none)
(texture-pool-method-20 () none)
(texture-pool-method-21 () none)
(texture-pool-method-22 () none)
(texture-pool-method-23 () none)
(texture-pool-method-24 () none)
(texture-pool-method-25 () none)
(texture-pool-method-26 () none)
(texture-pool-method-27 () none)
)
)
(deftype texture-mask (structure)
"Mask where each bit indicates if some part of a tpage is used, by a texture.
Additionally, the w component holds a minimum distance. The texture is only needed
if the distance to the object is smaller than this."
((mask vector4w :inline)
(dist float :overlay-at (-> mask data 3))
(long uint64 2 :overlay-at (-> mask data 0))
(quad uint128 :overlay-at (-> mask data 0))
)
)
(deftype texture-masks (structure)
"Grouping of three masks, corresponding to the 3 segments of the texture.
So mask 0 is needed if segment 0 of the texture is needed, etc..."
((data texture-mask 3 :inline)
(level basic :overlay-at (-> data 0 mask data 2))
)
)
(deftype texture-masks-array (inline-array-class)
"Group of all texture-masks for a given tpage."
((data texture-masks :inline :dynamic)
)
)
(set! (-> texture-masks-array heap-base) (the-as uint 48))
(define *texture-masks* (the-as texture-masks #f))
(define *texture-masks-array* (the-as texture-masks-array #f))
(deftype texture (basic)
"Metadata for a texture."
((w int16)
(h int16)
(num-mips uint8)
(tex1-control uint8)
(psm gs-psm)
(mip-shift uint8)
(clutpsm uint16)
(dest uint16 7)
(clutdest uint16)
(width uint8 7)
(name string)
(size uint32)
(uv-dist float)
(pad uint32 3)
(masks texture-masks :inline)
)
)
(deftype texture-page-segment (structure)
"Metadata for a 'segment' of a texture page.
Each texture page has 3 segments - smaller number segments have higher detail mips."
((block-data pointer)
(size uint32)
(dest uint32)
)
:pack-me
:allow-misaligned
)
(defun texture-mip->segment ((arg0 int) (arg1 int))
(if (>= 2 arg1)
(+ (- -1 arg0) arg1)
(max 0 (- 2 arg0))
)
)
(deftype texture-page (basic)
"A collection of textures. There is a tpage per category per level.
These tpages are loaded from the DVD.
e.g.: prison tfrag is its own tpage.
The tpage has multiple textures, and 3 segments.
Lower number segments are larger and have hi-res versions of textures."
((info file-info)
(name string)
(id uint32)
(length int32)
(mip0-size uint32)
(size uint32)
(segment texture-page-segment 3 :inline)
(dram-size uint32)
(vram-size uint32)
(pad uint32 14)
(data texture :dynamic)
)
(:methods
(texture-page-method-9 () none)
(texture-page-method-10 () none)
(texture-page-method-11 () none)
(texture-page-method-12 () none)
(texture-page-method-13 () none)
(texture-page-method-14 () none)
)
)
(deftype shader-ptr (uint32)
"A pointer to an adgif-shader, stored in bits 8-32. This allows them to fit into
an adgif shader easily."
((first-8 uint8 :offset 0 :size 8)
(shader uint32 :offset 8 :size 24)
)
)
(deftype texture-link (structure)
"An overlay structure containing a shader-ptr that points to the next adgif-shader
in a linked list."
((next shader-ptr 1)
)
)
(deftype texture-page-dir-entry (structure)
"An entry for a texture in the texture-page-dir.
The texture-page-dir contains an entry for each tpage.
Each entry contains a reference to the tpage, and a linked list of shaders
using it."
((length int16)
(status uint16)
(page texture-page)
(link texture-link)
)
:pack-me
:allow-misaligned
)
(deftype texture-page-dir (basic)
"The list of all texture pages.
This is static data loaded from the DVD at boot."
((length int32)
(entries texture-page-dir-entry 1 :inline)
)
(:methods
(relocate (_type_ kheap (pointer uint8)) none :replace)
(unlink-shaders-in-heap (_type_ kheap) int)
(texture-page-dir-method-10 (_type_) none)
)
)
(deftype texture-relocate-later (basic)
"Unused in Jak 2, but metadata for postponing tpage copies until a second frame,
to have a smaller impact on frame times when loading."
((memcpy symbol)
(dest uint32)
(source uint32)
(move uint32)
(entry texture-page-dir-entry)
(page texture-page)
)
)
(define *texture-relocate-later* (new 'global 'texture-relocate-later))
(set! (-> *texture-relocate-later* memcpy) #f)
(define *texture-page-dir* (the-as texture-page-dir #f))
(deftype adgif-shader (structure)
"GS texturing/blending settings, called adgif-shader.
These are used by many different renderers and partially managed by the texture system.
For example, the texture system will automatically update tbp to point to the location
of the texture."
((quad qword 5 :inline)
(prims gs-reg64 10 :overlay-at quad)
(reg-0 gs-reg :overlay-at (-> quad 0 data 2))
(reg-1 gs-reg :overlay-at (-> prims 3))
(reg-2 gs-reg :overlay-at (-> prims 5))
(reg-3 gs-reg :overlay-at (-> prims 7))
(reg-4 gs-reg :overlay-at (-> prims 9))
(tex0 gs-tex0 :overlay-at (-> quad 0 data 0))
(tex1 gs-tex1 :overlay-at (-> prims 2))
(miptbp1 gs-miptbp :overlay-at (-> prims 4))
(clamp gs-clamp :overlay-at (-> prims 6))
(clamp-reg gs-reg64 :overlay-at reg-3)
(alpha gs-miptbp :overlay-at (-> prims 8))
(link-test link-test-flags :overlay-at (-> quad 0 data 2))
(texture-id texture-id :overlay-at reg-1)
(next shader-ptr :overlay-at reg-2)
(alpha-as-miptb2 gs-miptbp :overlay-at alpha)
(reg-4-u32 gs-reg32 :overlay-at reg-4)
)
)
(deftype adgif-shader-array (inline-array-class)
((data adgif-shader :inline :dynamic)
)
)
(set! (-> adgif-shader-array heap-base) (the-as uint 80))
(deftype texture-base (structure)
"Metadata about an area of VRAM set aside for fancy dynamic texture effects
(sky, eye, etc)."
((vram-page uint32)
(vram-block uint32)
(vram-word uint32)
)
)
(define ct32-24-block-table (new 'static 'boxed-array :type int32
0
1
4
5
16
17
20
21
2
3
6
7
18
19
22
23
8
9
12
13
24
25
28
29
10
11
14
15
26
27
30
31
)
)
(define mz32-24-block-table (new 'static 'boxed-array :type int32
16
17
20
21
0
1
4
5
18
19
22
23
2
3
6
7
24
25
28
29
8
9
12
13
26
27
30
31
10
11
14
15
)
)
(define ct16-block-table (new 'static 'boxed-array :type int32
0
2
8
10
1
3
9
11
4
6
12
14
5
7
13
15
16
18
24
26
17
19
25
27
20
22
28
30
21
23
29
31
)
)
(define ct16s-block-table (new 'static 'boxed-array :type int32
0
2
16
18
1
3
17
19
8
10
24
26
9
11
25
27
4
6
20
22
5
7
21
23
12
14
28
30
13
15
29
31
)
)
(define mz16-block-table (new 'static 'boxed-array :type int32
16
18
24
26
17
19
25
27
20
22
28
30
21
23
29
31
0
2
8
10
1
3
9
11
4
6
12
14
5
7
13
15
)
)
(define mz16s-block-table (new 'static 'boxed-array :type int32
16
18
0
2
17
19
1
3
24
26
8
10
25
27
9
11
20
22
4
6
21
23
5
7
28
30
12
14
29
31
13
15
)
)
(define mt8-block-table (new 'static 'boxed-array :type int32
0
1
4
5
16
17
20
21
2
3
6
7
18
19
22
23
8
9
12
13
24
25
28
29
10
11
14
15
26
27
30
31
)
)
(define mt4-block-table (new 'static 'boxed-array :type int32
0
2
8
10
1
3
9
11
4
6
12
14
5
7
13
15
16
18
24
26
17
19
25
27
20
22
28
30
21
23
29
31
)
)
(deftype texture-page-translate-item (structure)
((bucket bucket-id)
(level-index uint32)
(level-texture-page tpage-category-u32)
(texture-user texture-enable-mask-u32)
)
)
(define *texture-page-translate* (new 'static 'boxed-array :type texture-page-translate-item
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-lcom-sky-pre)
:level-index #x12
:level-texture-page (tpage-category-u32 sky)
:texture-user (texture-enable-mask-u32 sky)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket7)
:texture-user (texture-enable-mask-u32 tfrag)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l1-tfrag)
:level-index #x1
:texture-user (texture-enable-mask-u32 tfrag)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l3-tfrag)
:level-index #x2
:texture-user (texture-enable-mask-u32 tfrag)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id etie-scissor-l5-tfrag)
:level-index #x3
:texture-user (texture-enable-mask-u32 tfrag)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tie-scissor-l7-tfrag)
:level-index #x4
:texture-user (texture-enable-mask-u32 tfrag)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tfrag-scissor-l9-tfrag)
:level-index #x5
:texture-user (texture-enable-mask-u32 tfrag)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id shrub-near-trans-l1-shrub)
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 shrub)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id shrub-vanish-l3-shrub)
:level-index #x1
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 shrub)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id billboard-l5-shrub)
:level-index #x2
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 shrub)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id shrub-near-l7-shrub)
:level-index #x3
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 shrub)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id shrub-l9-shrub)
:level-index #x4
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 shrub)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l0-alpha)
:level-index #x5
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 shrub)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tfrag-scissor-l2-alpha)
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 alpha)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l4-alpha)
:level-index #x1
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 alpha)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l6-alpha)
:level-index #x2
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 alpha)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l8-alpha)
:level-index #x3
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 alpha)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-lcom-tfrag)
:level-index #x4
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 alpha)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l2-pris)
:level-index #x5
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 alpha)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l6-pris)
:level-index #x12
:texture-user (texture-enable-mask-u32 tfrag)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l8-pris)
:level-index #x12
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 shrub)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x12
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-lcom-pris)
:level-index #x6
:level-texture-page (tpage-category-u32 sky)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l1-pris2)
:level-index #x7
:level-texture-page (tpage-category-u32 sky)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id emerc-l3-pris2)
:level-index #x8
:level-texture-page (tpage-category-u32 sky)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l5-pris2)
:level-index #x9
:level-texture-page (tpage-category-u32 sky)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l7-pris2)
:level-index #xa
:level-texture-page (tpage-category-u32 sky)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 shrub)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 alpha)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l8-pris2)
:level-index #xb
:level-texture-page (tpage-category-u32 sky)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-lcom-pris2)
:level-index #xc
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #xc
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id etie-l0-water)
:level-index #xd
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #xd
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tie-l1-water)
:level-index #xe
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #xe
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tfrag-l2-water)
:level-index #xf
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #xf
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc-l3-water)
:level-index #x10
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x10
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id merc-l4-water)
:level-index #x11
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x11
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tex-l5-water)
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id gmerc2-l5-water)
:level-index #x1
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id etie-scissor-l6-water)
:level-index #x2
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tfrag-scissor-l7-water)
:level-index #x3
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id tie-scissor-l8-water)
:level-index #x4
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id etie-l9-water)
:level-index #x5
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id anti-alias)
:level-index #x12
:level-texture-page (tpage-category-u32 pris)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id generic-warp)
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id debug-menu)
:level-index #x1
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket594)
:level-index #x2
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket603)
:level-index #x3
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket612)
:level-index #x4
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket621)
:level-index #x5
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 all-pris)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket630)
:level-index #x12
:level-texture-page (tpage-category-u32 pris2)
:texture-user (texture-enable-mask-u32 sky)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket633)
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 water)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket652)
:level-index #x1
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 water)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket671)
:level-index #x2
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 water)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket690)
:level-index #x3
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 water)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket709)
:level-index #x4
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 water)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket728)
:level-index #x5
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 water)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket747)
:level-index #x12
:level-texture-page (tpage-category-u32 water)
:texture-user (texture-enable-mask-u32 water)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket767)
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 sprite)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket767)
:level-index #x1
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 sprite)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket767)
:level-index #x2
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 sprite)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket767)
:level-index #x3
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 sprite)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket767)
:level-index #x4
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 sprite)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket767)
:level-index #x5
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 sprite)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket767)
:level-index #x12
:level-texture-page (tpage-category-u32 sprite)
:texture-user (texture-enable-mask-u32 sprite)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket780)
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 warp)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket780)
:level-index #x1
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 warp)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket780)
:level-index #x2
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 warp)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket780)
:level-index #x3
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 warp)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket780)
:level-index #x4
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 warp)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket780)
:level-index #x5
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 warp)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket780)
:level-index #x12
:level-texture-page (tpage-category-u32 warp)
:texture-user (texture-enable-mask-u32 warp)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x1
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x2
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x3
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x4
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x5
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
(new 'static 'texture-page-translate-item
:bucket (bucket-id bucket786)
:level-index #x12
:level-texture-page (tpage-category-u32 hud)
:texture-user (texture-enable-mask-u32 hud)
)
)
)