mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
bb323c2ebe
* Initial depth-cue implementation * Oops * Finish merge + fix issues with letterboxing * Fix alpha blending * Add some debug options + profiler stats * More debug options + respect xyoffset GS register * Clean up GOAL code * Disable depth-cue by default * typo * very important typo * depth-cue disable, but better
110 lines
2.7 KiB
Common Lisp
110 lines
2.7 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: vu1-user-h.gc
|
|
;; name in dgo: vu1-user-h
|
|
;; dgos: GAME, ENGINE
|
|
|
|
;; VU1 renderers are enabled/disabled with a bitmask.
|
|
|
|
;; I believe this is renderers which can be enabled/disabled in the debug menu?
|
|
|
|
(defenum vu1-renderer-mask
|
|
:bitfield #t
|
|
(sky 3)
|
|
(ocean 4)
|
|
(ocean-wave 5)
|
|
(tfrag 6)
|
|
(tie-near 7)
|
|
(tie 8)
|
|
(generic 9)
|
|
(merc 10)
|
|
(shrubbery 11)
|
|
(shrub-near 12)
|
|
(billboard 13)
|
|
(trans-shrubbery 14)
|
|
(trans-tfrag 15)
|
|
(sprite 16)
|
|
(shadow 17)
|
|
(depth-cue 18)
|
|
(nineteen 19)
|
|
(twenty 20)
|
|
)
|
|
|
|
(define *vu1-enable-user-menu*
|
|
(vu1-renderer-mask
|
|
sky
|
|
ocean
|
|
ocean-wave
|
|
tfrag
|
|
tie-near
|
|
tie
|
|
generic
|
|
merc
|
|
shrubbery
|
|
shrub-near
|
|
billboard
|
|
trans-shrubbery
|
|
trans-tfrag
|
|
sprite
|
|
shadow
|
|
depth-cue
|
|
nineteen
|
|
twenty
|
|
)
|
|
)
|
|
|
|
;; disable depth-cue by default for the PC port
|
|
(#when PC_PORT
|
|
(logclear! *vu1-enable-user-menu* (vu1-renderer-mask depth-cue))
|
|
)
|
|
|
|
;; by default, all off.
|
|
;; the menu renderers get copied to this on each frame
|
|
(define *vu1-enable-user* (the-as vu1-renderer-mask 0))
|
|
|
|
;; a dma "sink" is somewhere where a renderer can put stuff.
|
|
(deftype dma-foreground-sink (basic)
|
|
((bucket bucket-id :offset-assert 4) ;; the DMA bucket
|
|
(foreground-texture-page int8 :offset-assert 8) ;; the tpage we need (in the level)
|
|
(foreground-texture-level int8 :offset-assert 9) ;; the level we belong to
|
|
(foreground-output-bucket int8 :offset-assert 10) ;; ?
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #xb
|
|
:flag-assert #x90000000b
|
|
)
|
|
|
|
;; additional info for the generic renderer
|
|
(deftype generic-bucket-state (structure)
|
|
((gifbuf-adr uint32 :offset-assert 0)
|
|
(inbuf-adr uint32 :offset-assert 4)
|
|
)
|
|
:pack-me
|
|
:method-count-assert 9
|
|
:size-assert #x8
|
|
:flag-assert #x900000008
|
|
)
|
|
|
|
;; sink for the generic renderer, a normal sink + extra data.
|
|
(deftype generic-dma-foreground-sink (dma-foreground-sink)
|
|
((state generic-bucket-state :inline :offset-assert 12)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x14
|
|
:flag-assert #x900000014
|
|
)
|
|
|
|
;; group of sinks used for the foreground renderers.
|
|
(declare-type level basic)
|
|
(deftype dma-foreground-sink-group (basic)
|
|
((sink dma-foreground-sink 3 :offset-assert 4)
|
|
(merc-sink dma-foreground-sink :offset 4)
|
|
(generic-sink generic-dma-foreground-sink :offset 8)
|
|
(level level :offset-assert 16)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x14
|
|
:flag-assert #x900000014
|
|
)
|