;;-*-Lisp-*-
(in-package goal)

;; name: vu1-user-h.gc
;; name in dgo: vu1-user-h
;; dgos: GAME

;; +++tpage-category
(defenum tpage-category
  :type int8
  (tfrag 0) ;;
  (pris 1)
  (shrub 2)
  (alpha 3)
  (water 4)
  (warp 5)
  (pris2 6)
  (sprite 7)
  (hud 8) ;; or map?
  (sky 9)
  (hfrag 10)
  )
;; ---tpage-category

;; +++bucket-id
;; <renderer>-l<level>-<tpage>
(defenum bucket-id
  :type int32
  (bucket0 0)
  (bucket1 1)
  (bucket2 2) ;; pc vis stuff
  (blit 3)
  (tex-lcom-sky-pre 4)
  (sky 5) ;; sky
  (bucket6 6) ;; ocean
  (bucket7 7) ;; unknown new jak 3 texture upload, for all levels.
  (hfrag 8) ;; hfrag
  (hfrag-scissor 9) ;; hfrag

  (tex-l0-tfrag 10) ;; texture
  (tfrag-l0-tfrag 11)     ;; tfrag
  (tie-l0-tfrag 12)     ;; tie
  (etie-l0-tfrag 13)     ;; tie
  (tfrag-scissor-l0-tfrag 14)     ;; tfrag
  (tie-scissor-l0-tfrag 15)     ;; tie
  (etie-scissor-l0-tfrag 16)     ;; tie
  (merc-l0-tfrag 17)     ;; merc
  (emerc-l0-tfrag 18)     ;; emerc
  (gmerc-l0-tfrag 19)     ;; generic
  (tie-vanish-l0-tfrag 20)     ;; tie
  (gmerc2-l0-tfrag 21)     ;; generic

  (tex-l1-tfrag 22)
  (tfrag-l1-tfrag 23)
  (tie-l1-tfrag 24)
  (etie-l1-tfrag 25)
  (tfrag-scissor-l1-tfrag 26)
  (tie-scissor-l1-tfrag 27)
  (etie-scissor-l1-tfrag 28)
  (merc-l1-tfrag 29)
  (emerc-l1-tfrag 30)
  (gmerc-l1-tfrag 31)
  (tie-vanish-l1-tfrag 32)
  (gmerc2-l1-tfrag 33)

  (tex-l2-tfrag 34)
  (tfrag-l2-tfrag 35)
  (tie-l2-tfrag 36)
  (etie-l2-tfrag 37)
  (tfrag-scissor-l2-tfrag 38)
  (tie-scissor-l2-tfrag 39)
  (etie-scissor-l2-tfrag 40)
  (merc-l2-tfrag 41)
  (emerc-l2-tfrag 42)
  (gmerc-l2-tfrag 43)
  (tie-vanish-l2-tfrag 44)
  (gmerc2-l2-tfrag 45)

  (tex-l3-tfrag 46)
  (tfrag-l3-tfrag 47)
  (tie-l3-tfrag 48)
  (etie-l3-tfrag 49)
  (tfrag-scissor-l3-tfrag 50)
  (tie-scissor-l3-tfrag 51)
  (etie-scissor-l3-tfrag 52)
  (merc-l3-tfrag 53)
  (emerc-l3-tfrag 54)
  (gmerc-l3-tfrag 55)
  (tie-vanish-l3-tfrag 56)
  (gmerc2-l3-tfrag 57)

  (tex-l4-tfrag 58)
  (tfrag-l4-tfrag 59)
  (tie-l4-tfrag 60)
  (etie-l4-tfrag 61)
  (tfrag-scissor-l4-tfrag 62)
  (tie-scissor-l4-tfrag 63)
  (etie-scissor-l4-tfrag 64)
  (merc-l4-tfrag 65)
  (emerc-l4-tfrag 66)
  (gmerc-l4-tfrag 67)
  (tie-vanish-l4-tfrag 68)
  (gmerc2-l4-tfrag 69)

  (tex-l5-tfrag 70)
  (tfrag-l5-tfrag 71)
  (tie-l5-tfrag 72)
  (etie-l5-tfrag 73)
  (tfrag-scissor-l5-tfrag 74)
  (tie-scissor-l5-tfrag 75)
  (etie-scissor-l5-tfrag 76)
  (merc-l5-tfrag 77)
  (emerc-l5-tfrag 78)
  (gmerc-l5-tfrag 79)
  (tie-vanish-l5-tfrag 80)
  (gmerc2-l5-tfrag 81)

  (tex-l6-tfrag 82)
  (tfrag-l6-tfrag 83)
  (tie-l6-tfrag 84)
  (etie-l6-tfrag 85)
  (tfrag-scissor-l6-tfrag 86)
  (tie-scissor-l6-tfrag 87)
  (etie-scissor-l6-tfrag 88)
  (merc-l6-tfrag 89)
  (emerc-l6-tfrag 90)
  (gmerc-l6-tfrag 91)
  (tie-vanish-l6-tfrag 92)
  (gmerc2-l6-tfrag 93)

  (tex-l7-tfrag 94)
  (tfrag-l7-tfrag 95)
  (tie-l7-tfrag 96)
  (etie-l7-tfrag 97)
  (tfrag-scissor-l7-tfrag 98)
  (tie-scissor-l7-tfrag 99)
  (etie-scissor-l7-tfrag 100)
  (merc-l7-tfrag 101)
  (emerc-l7-tfrag 102)
  (gmerc-l7-tfrag 103)
  (tie-vanish-l7-tfrag 104)
  (gmerc2-l7-tfrag 105)

  (tex-l8-tfrag 106)
  (tfrag-l8-tfrag 107)
  (tie-l8-tfrag 108)
  (etie-l8-tfrag 109)
  (tfrag-scissor-l8-tfrag 110)
  (tie-scissor-l8-tfrag 111)
  (etie-scissor-l8-tfrag 112)
  (merc-l8-tfrag 113)
  (emerc-l8-tfrag 114)
  (gmerc-l8-tfrag 115)
  (tie-vanish-l8-tfrag 116)
  (gmerc2-l8-tfrag 117)

  (tex-l9-tfrag 118)
  (tfrag-l9-tfrag 119)
  (tie-l9-tfrag 120)
  (etie-l9-tfrag 121)
  (tfrag-scissor-l9-tfrag 122)
  (tie-scissor-l9-tfrag 123)
  (etie-scissor-l9-tfrag 124)
  (merc-l9-tfrag 125)
  (emerc-l9-tfrag 126)
  (gmerc-l9-tfrag 127)
  (tie-vanish-l9-tfrag 128)
  (gmerc2-l9-tfrag 129)

  (tex-l0-shrub 130)
  (shrub-l0-shrub 131)
  (shrub-near-l0-shrub 132)
  (billboard-l0-shrub 133)
  (shrub-vanish-l0-shrub 134)
  (shrub-near-trans-l0-shrub 135)
  (merc-l0-shrub 136)
  (emerc-l0-shrub 137)
  (gmerc-l0-shrub 138)
  (gmerc2-l0-shrub 139)

  (tex-l1-shrub 140)
  (shrub-l1-shrub 141)
  (shrub-near-l1-shrub 142)
  (billboard-l1-shrub 143)
  (shrub-vanish-l1-shrub 144)
  (shrub-near-trans-l1-shrub 145)
  (merc-l1-shrub 146)
  (emerc-l1-shrub 147)
  (gmerc-l1-shrub 148)
  (gmerc2-l1-shrub 149)

  (tex-l2-shrub 150)
  (shrub-l2-shrub 151)
  (shrub-near-l2-shrub 152)
  (billboard-l2-shrub 153)
  (shrub-vanish-l2-shrub 154)
  (shrub-near-trans-l2-shrub 155)
  (merc-l2-shrub 156)
  (emerc-l2-shrub 157)
  (gmerc-l2-shrub 158)
  (gmerc2-l2-shrub 159)

  (tex-l3-shrub 160)
  (shrub-l3-shrub 161)
  (shrub-near-l3-shrub 162)
  (billboard-l3-shrub 163)
  (shrub-vanish-l3-shrub 164)
  (shrub-near-trans-l3-shrub 165)
  (merc-l3-shrub 166)
  (emerc-l3-shrub 167)
  (gmerc-l3-shrub 168)
  (gmerc2-l3-shrub 169)

  (tex-l4-shrub 170)
  (shrub-l4-shrub 171)
  (shrub-near-l4-shrub 172)
  (billboard-l4-shrub 173)
  (shrub-vanish-l4-shrub 174)
  (shrub-near-trans-l4-shrub 175)
  (merc-l4-shrub 176)
  (emerc-l4-shrub 177)
  (gmerc-l4-shrub 178)
  (gmerc2-l4-shrub 179)

  (tex-l5-shrub 180)
  (shrub-l5-shrub 181)
  (shrub-near-l5-shrub 182)
  (billboard-l5-shrub 183)
  (shrub-vanish-l5-shrub 184)
  (shrub-near-trans-l5-shrub 185)
  (merc-l5-shrub 186)
  (emerc-l5-shrub 187)
  (gmerc-l5-shrub 188)
  (gmerc2-l5-shrub 189)

  (tex-l6-shrub 190)
  (shrub-l6-shrub 191)
  (shrub-near-l6-shrub 192)
  (billboard-l6-shrub 193)
  (shrub-vanish-l6-shrub 194)
  (shrub-near-trans-l6-shrub 195)
  (merc-l6-shrub 196)
  (emerc-l6-shrub 197)
  (gmerc-l6-shrub 198)
  (gmerc2-l6-shrub 199)

  (tex-l7-shrub 200)
  (shrub-l7-shrub 201)
  (shrub-near-l7-shrub 202)
  (billboard-l7-shrub 203)
  (shrub-vanish-l7-shrub 204)
  (shrub-near-trans-l7-shrub 205)
  (merc-l7-shrub 206)
  (emerc-l7-shrub 207)
  (gmerc-l7-shrub 208)
  (gmerc2-l7-shrub 209)

  (tex-l8-shrub 210)
  (shrub-l8-shrub 211)
  (shrub-near-l8-shrub 212)
  (billboard-l8-shrub 213)
  (shrub-vanish-l8-shrub 214)
  (shrub-near-trans-l8-shrub 215)
  (merc-l8-shrub 216)
  (emerc-l8-shrub 217)
  (gmerc-l8-shrub 218)
  (gmerc2-l8-shrub 219)

  (tex-l9-shrub 220)
  (shrub-l9-shrub 221)
  (shrub-near-l9-shrub 222)
  (billboard-l9-shrub 223)
  (shrub-vanish-l9-shrub 224)
  (shrub-near-trans-l9-shrub 225)
  (merc-l9-shrub 226)
  (emerc-l9-shrub 227)
  (gmerc-l9-shrub 228)
  (gmerc2-l9-shrub 229)

  (tex-l0-alpha 230)
  (tfrag-l0-alpha 231)
  (tie-l0-alpha 232)
  (etie-l0-alpha 233)
  (merc-l0-alpha 234)
  (emerc-l0-alpha 235)
  (gmerc-l0-alpha 236)
  (tfrag-scissor-l0-alpha 237)
  (tie-scissor-l0-alpha 238)
  (etie-scissor-l0-alpha 239)
  (gmerc2-l0-alpha 240)

  (tex-l1-alpha 241)
  (tfrag-l1-alpha 242)
  (tie-l1-alpha 243)
  (etie-l1-alpha 244)
  (merc-l1-alpha 245)
  (emerc-l1-alpha 246)
  (gmerc-l1-alpha 247)
  (tfrag-scissor-l1-alpha 248)
  (tie-scissor-l1-alpha 249)
  (etie-scissor-l1-alpha 250)
  (gmerc2-l1-alpha 251)

  (tex-l2-alpha 252)
  (tfrag-l2-alpha 253)
  (tie-l2-alpha 254)
  (etie-l2-alpha 255)
  (merc-l2-alpha 256)
  (emerc-l2-alpha 257)
  (gmerc-l2-alpha 258)
  (tfrag-scissor-l2-alpha 259)
  (tie-scissor-l2-alpha 260)
  (etie-scissor-l2-alpha 261)
  (gmerc2-l2-alpha 262)

  (tex-l3-alpha 263)
  (tfrag-l3-alpha 264)
  (tie-l3-alpha 265)
  (etie-l3-alpha 266)
  (merc-l3-alpha 267)
  (emerc-l3-alpha 268)
  (gmerc-l3-alpha 269)
  (tfrag-scissor-l3-alpha 270)
  (tie-scissor-l3-alpha 271)
  (etie-scissor-l3-alpha 272)
  (gmerc2-l3-alpha 273)

  (tex-l4-alpha 274)
  (tfrag-l4-alpha 275)
  (tie-l4-alpha 276)
  (etie-l4-alpha 277)
  (merc-l4-alpha 278)
  (emerc-l4-alpha 279)
  (gmerc-l4-alpha 280)
  (tfrag-scissor-l4-alpha 281)
  (tie-scissor-l4-alpha 282)
  (etie-scissor-l4-alpha 283)
  (gmerc2-l4-alpha 284)

  (tex-l5-alpha 285)
  (tfrag-l5-alpha 286)
  (tie-l5-alpha 287)
  (etie-l5-alpha 288)
  (merc-l5-alpha 289)
  (emerc-l5-alpha 290)
  (gmerc-l5-alpha 291)
  (tfrag-scissor-l5-alpha 292)
  (tie-scissor-l5-alpha 293)
  (etie-scissor-l5-alpha 294)
  (gmerc2-l5-alpha 295)

  (tex-l6-alpha 296)
  (tfrag-l6-alpha 297)
  (tie-l6-alpha 298)
  (etie-l6-alpha 299)
  (merc-l6-alpha 300)
  (emerc-l6-alpha 301)
  (gmerc-l6-alpha 302)
  (tfrag-scissor-l6-alpha 303)
  (tie-scissor-l6-alpha 304)
  (etie-scissor-l6-alpha 305)
  (gmerc2-l6-alpha 306)

  (tex-l7-alpha 307)
  (tfrag-l7-alpha 308)
  (tie-l7-alpha 309)
  (etie-l7-alpha 310)
  (merc-l7-alpha 311)
  (emerc-l7-alpha 312)
  (gmerc-l7-alpha 313)
  (tfrag-scissor-l7-alpha 314)
  (tie-scissor-l7-alpha 315)
  (etie-scissor-l7-alpha 316)
  (gmerc2-l7-alpha 317)

  (tex-l8-alpha 318)
  (tfrag-l8-alpha 319)
  (tie-l8-alpha 320)
  (etie-l8-alpha 321)
  (merc-l8-alpha 322)
  (emerc-l8-alpha 323)
  (gmerc-l8-alpha 324)
  (tfrag-scissor-l8-alpha 325)
  (tie-scissor-l8-alpha 326)
  (etie-scissor-l8-alpha 327)
  (gmerc2-l8-alpha 328)

  (tex-l9-alpha 329)
  (tfrag-l9-alpha 330)
  (tie-l9-alpha 331)
  (etie-l9-alpha 332)
  (merc-l9-alpha 333)
  (emerc-l9-alpha 334)
  (gmerc-l9-alpha 335)
  (tfrag-scissor-l9-alpha 336)
  (tie-scissor-l9-alpha 337)
  (etie-scissor-l9-alpha 338)
  (gmerc2-l9-alpha 339)

  (tex-lcom-tfrag 340)
  (merc-lcom-tfrag 341)
  (emerc-lcom-tfrag 342)
  (gmerc-lcom-tfrag 343)
  (gmerc2-lcom-tfrag 344)

  (tex-lcom-shrub 345)
  (merc-lcom-shrub 346)
  (emerc-lcom-shrub 347)
  (gmerc-lcom-shrub 348)
  (gmerc2-lcom-shrub 349)

  (shadow 350)

  (tex-l0-pris 351)
  (merc-l0-pris 352)
  (emerc-l0-pris 353)
  (gmerc-l0-pris 354)
  (gmerc2-l0-pris 355)

  (tex-l1-pris 356)
  (merc-l1-pris 357)
  (emerc-l1-pris 358)
  (gmerc-l1-pris 359)
  (gmerc2-l1-pris 360)

  (tex-l2-pris 361)
  (merc-l2-pris 362)
  (emerc-l2-pris 363)
  (gmerc-l2-pris 364)
  (gmerc2-l2-pris 365)

  (tex-l3-pris 366)
  (merc-l3-pris 367)
  (emerc-l3-pris 368)
  (gmerc-l3-pris 369)
  (gmerc2-l3-pris 370)

  (tex-l4-pris 371)
  (merc-l4-pris 372)
  (emerc-l4-pris 373)
  (gmerc-l4-pris 374)
  (gmerc2-l4-pris 375)

  (tex-l5-pris 376)
  (merc-l5-pris 377)
  (emerc-l5-pris 378)
  (gmerc-l5-pris 379)
  (gmerc2-l5-pris 380)

  (tex-l6-pris 381)
  (merc-l6-pris 382)
  (emerc-l6-pris 383)
  (gmerc-l6-pris 384)
  (gmerc2-l6-pris 385)

  (tex-l7-pris 386)
  (merc-l7-pris 387)
  (emerc-l7-pris 388)
  (gmerc-l7-pris 389)
  (gmerc2-l7-pris 390)

  (tex-l8-pris 391)
  (merc-l8-pris 392)
  (emerc-l8-pris 393)
  (gmerc-l8-pris 394)
  (gmerc2-l8-pris 395)

  (tex-l9-pris 396)
  (merc-l9-pris 397)
  (emerc-l9-pris 398)
  (gmerc-l9-pris 399)
  (gmerc2-l9-pris 400)

  (tex-lcom-pris 401)
  (merc-lcom-pris 402)
  (emerc-lcom-pris 403)
  (gmerc-lcom-pris 404)
  (gmerc2-lcom-pris 405)

  (tex-l0-pris2 406)
  (merc-l0-pris2 407)
  (emerc-l0-pris2 408)
  (gmerc-l0-pris2 409)
  (gmerc2-l0-pris2 410)

  (tex-l1-pris2 411)
  (merc-l1-pris2 412)
  (emerc-l1-pris2 413)
  (gmerc-l1-pris2 414)
  (gmerc2-l1-pris2 415)

  (tex-l2-pris2 416)
  (merc-l2-pris2 417)
  (emerc-l2-pris2 418)
  (gmerc-l2-pris2 419)
  (gmerc2-l2-pris2 420)

  (tex-l3-pris2 421)
  (merc-l3-pris2 422)
  (emerc-l3-pris2 423)
  (gmerc-l3-pris2 424)
  (gmerc2-l3-pris2 425)

  (tex-l4-pris2 426)
  (merc-l4-pris2 427)
  (emerc-l4-pris2 428)
  (gmerc-l4-pris2 429)
  (gmerc2-l4-pris2 430)

  (tex-l5-pris2 431)
  (merc-l5-pris2 432)
  (emerc-l5-pris2 433)
  (gmerc-l5-pris2 434)
  (gmerc2-l5-pris2 435)

  (tex-l6-pris2 436)
  (merc-l6-pris2 437)
  (emerc-l6-pris2 438)
  (gmerc-l6-pris2 439)
  (gmerc2-l6-pris2 440)

  (tex-l7-pris2 441)
  (merc-l7-pris2 442)
  (emerc-l7-pris2 443)
  (gmerc-l7-pris2 444)
  (gmerc2-l7-pris2 445)

  (tex-l8-pris2 446)
  (merc-l8-pris2 447)
  (emerc-l8-pris2 448)
  (gmerc-l8-pris2 449)
  (gmerc2-l8-pris2 450)

  (tex-l9-pris2 451)
  (merc-l9-pris2 452)
  (emerc-l9-pris2 453)
  (gmerc-l9-pris2 454)
  (gmerc2-l9-pris2 455)

  (tex-lcom-pris2 456)
  (merc-lcom-pris2 457)
  (emerc-lcom-pris2 458)
  (gmerc-lcom-pris2 459)
  (gmerc2-lcom-pris2 460)

  (tex-lcom-sky-post 461)
  (bucket462 462)

  (tex-l0-water 463)
  (merc-l0-water 464)
  (gmerc-l0-water 465)
  (tfrag-l0-water 466)
  (tie-l0-water 467)
  (etie-l0-water 468)
  (tie-scissor-l0-water 469)
  (tfrag-scissor-l0-water 470)
  (etie-scissor-l0-water 471)
  (gmerc2-l0-water 472)

  (tex-l1-water 473)
  (merc-l1-water 474)
  (gmerc-l1-water 475)
  (tfrag-l1-water 476)
  (tie-l1-water 477)
  (etie-l1-water 478)
  (tie-scissor-l1-water 479)
  (tfrag-scissor-l1-water 480)
  (etie-scissor-l1-water 481)
  (gmerc2-l1-water 482)

  (tex-l2-water 483)
  (merc-l2-water 484)
  (gmerc-l2-water 485)
  (tfrag-l2-water 486)
  (tie-l2-water 487)
  (etie-l2-water 488)
  (tie-scissor-l2-water 489)
  (tfrag-scissor-l2-water 490)
  (etie-scissor-l2-water 491)
  (gmerc2-l2-water 492)

  (tex-l3-water 493)
  (merc-l3-water 494)
  (gmerc-l3-water 495)
  (tfrag-l3-water 496)
  (tie-l3-water 497)
  (etie-l3-water 498)
  (tie-scissor-l3-water 499)
  (tfrag-scissor-l3-water 500)
  (etie-scissor-l3-water 501)
  (gmerc2-l3-water 502)

  (tex-l4-water 503)
  (merc-l4-water 504)
  (gmerc-l4-water 505)
  (tfrag-l4-water 506)
  (tie-l4-water 507)
  (etie-l4-water 508)
  (tie-scissor-l4-water 509)
  (tfrag-scissor-l4-water 510)
  (etie-scissor-l4-water 511)
  (gmerc2-l4-water 512)

  (tex-l5-water 513)
  (merc-l5-water 514)
  (gmerc-l5-water 515)
  (tfrag-l5-water 516)
  (tie-l5-water 517)
  (etie-l5-water 518)
  (tie-scissor-l5-water 519)
  (tfrag-scissor-l5-water 520)
  (etie-scissor-l5-water 521)
  (gmerc2-l5-water 522)

  (tex-l6-water 523)
  (merc-l6-water 524)
  (gmerc-l6-water 525)
  (tfrag-l6-water 526)
  (tie-l6-water 527)
  (etie-l6-water 528)
  (tie-scissor-l6-water 529)
  (tfrag-scissor-l6-water 530)
  (etie-scissor-l6-water 531)
  (gmerc2-l6-water 532)

  (tex-l7-water 533)
  (merc-l7-water 534)
  (gmerc-l7-water 535)
  (tfrag-l7-water 536)
  (tie-l7-water 537)
  (etie-l7-water 538)
  (tie-scissor-l7-water 539)
  (tfrag-scissor-l7-water 540)
  (etie-scissor-l7-water 541)
  (gmerc2-l7-water 542)

  (tex-l8-water 543)
  (merc-l8-water 544)
  (gmerc-l8-water 545)
  (tfrag-l8-water 546)
  (tie-l8-water 547)
  (etie-l8-water 548)
  (tie-scissor-l8-water 549)
  (tfrag-scissor-l8-water 550)
  (etie-scissor-l8-water 551)
  (gmerc2-l8-water 552)

  (tex-l9-water 553)
  (merc-l9-water 554)
  (gmerc-l9-water 555)
  (tfrag-l9-water 556)
  (tie-l9-water 557)
  (etie-l9-water 558)
  (tie-scissor-l9-water 559)
  (tfrag-scissor-l9-water 560)
  (etie-scissor-l9-water 561)
  (gmerc2-l9-water 562)

  (tex-lcom-water 563)
  (merc-lcom-water 564)
  (gmerc-lcom-water 565)
  (gmerc2-lcom-water 566) ;; default for prim
  (anti-alias 567)

  (tex-sprite 568)
  (generic-sprite-1 569) ;; ;prim
  (particles 570)
  (generic-sprite-2 571)
  (shadow2 572)
  (shadow3 573)
  (generic-sprite-3 574)

  (tex-warp 575)
  (generic-warp 576)

  (debug-no-zbuf1 577) ;; debug?
  (tex-hud-hud-alpha 578)
  (hud-draw-hud-alpha 579)
  (tex-hud-pris2 580)
  (hud-draw-pris2 581)
  (bucket582 582)
  (debug 583)
  (debug-no-zbuf2 584)
  (debug-menu 585)
  (bucket586 586)
  )

;; ---bucket-id

(defenum bucket-id-16
  :type int16
  :copy-entries bucket-id
  )

;; +++vu1-renderer-mask
;; TODO stolen from Jak 2 (and it was all wrong...)
(defenum vu1-renderer-mask
  :type uint64
  :bitfield #t
  (rn0)
  (rn1)
  (rn2)
  (sky)
  (rn4)
  (rn5)
  (hfrag)
  (hfrag-scissor)
  (tfrag)
  (tie-scissor)
  (tie)
  (etie)
  (etie-scissor)
  (tie-vanish)
  (generic) ;; right
  (merc)    ;; right
  (emerc)   ;; right
  (shrubbery)
  (shrub-near)
  (billboard)
  (shrub-vanish)
  (tfrag-trans)
  (tie-scissor-trans)
  (tie-trans)
  (etie-trans)
  (etie-scissor-trans)
  (tfrag-water)
  (tie-scissor-water)
  (tie-water)
  (etie-water)
  (etie-scissor-water)
  (sprite)
  (rn32)
  (rn33)
  (rn34)
  (rn35)
  (depth-cue)
  (rn37)
  )
;; ---vu1-renderer-mask

;; +++tpage-category-u32
(defenum tpage-category-u32
  :type uint32
  :copy-entries tpage-category
  )
;; ---tpage-category-u32


;; +++texture-enable-mask
(defenum texture-enable-mask
  :type uint64
  :bitfield #t
  (tfrag 0)
  (all-pris 1)
  (shrub 2)
  (alpha 3)
  (water 4)
  (warp 5)
  (sprite 6)
  (hud 7)
  (sky 8)
  (hfrag 9)
  )
;; ---texture-enable-mask


;; +++texture-enable-mask-u32
(defenum texture-enable-mask-u32
  :type uint32
  :bitfield #t
  :copy-entries texture-enable-mask
  )
;; ---texture-enable-mask-u32


;; DECOMP BEGINS

(deftype dma-foreground-sink (basic)
  "A specification for where a foreground renderer should output its DMA data."
  ((bucket                    bucket-id)
   (foreground-texture-page   tpage-category)
   (foreground-texture-level  int8)
   (foreground-output-bucket  int8)
   )
  )


(deftype generic-bucket-state (structure)
  "The state of buffers for the generic renderer.
When generating generic DMA data, you must know the previous state
of the VU's memory to properly double-buffer the input and output data."
  ((gifbuf-adr  uint32)
   (inbuf-adr   uint32)
   )
  :pack-me
  )


(deftype generic-dma-foreground-sink (dma-foreground-sink)
  "A specification for where a foreground generic renderer should output DMA data,
and the state of the VU memory buffers at the end of the bucket."
  ((state  generic-bucket-state  :inline)
   )
  )
