mirror of
https://github.com/open-goal/jak-project
synced 2026-08-12 20:03:14 -04:00
[jak2] combined shadow work PR (#2632)
This PR is a combination of https://github.com/open-goal/jak-project/pull/2507 and some additional changes to port Shadow VU1 to OpenGL. As far as I can tell, it's working. --------- Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
This commit is contained in:
@@ -12567,12 +12567,14 @@
|
||||
:flag-assert #x9000025b0
|
||||
)
|
||||
|
||||
(declare-type shadow-vu1-constants structure)
|
||||
|
||||
(deftype shadow-bucket (structure)
|
||||
((first uint32 :offset-assert 0)
|
||||
(next uint32 :offset-assert 4)
|
||||
((first pointer :offset-assert 0)
|
||||
(next pointer :offset-assert 4)
|
||||
(bucket-id int32 :offset-assert 8)
|
||||
(shadow-color rgba :offset-assert 12)
|
||||
(constants basic :offset-assert 16)
|
||||
(constants shadow-vu1-constants :offset-assert 16)
|
||||
)
|
||||
:allow-misaligned
|
||||
:method-count-assert 9
|
||||
@@ -12702,9 +12704,9 @@
|
||||
)
|
||||
|
||||
(define-extern *shadow-globals* shadow-globals)
|
||||
(define-extern *shadow* object) ;; symbol
|
||||
(define-extern *shadow-object* object)
|
||||
(define-extern *shadow-debug* object)
|
||||
(define-extern *shadow* symbol) ;; symbol
|
||||
(define-extern *shadow-object* symbol)
|
||||
(define-extern *shadow-debug* symbol)
|
||||
(define-extern *shadow-dma-buf* dma-buffer)
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -24582,7 +24584,6 @@
|
||||
;; shadow-cpu ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype shadow-stats (structure)
|
||||
((num-single-tris uint32 :offset-assert 0)
|
||||
(num-double-tris uint32 :offset-assert 4)
|
||||
@@ -24595,9 +24596,7 @@
|
||||
:size-assert #x14
|
||||
:flag-assert #x900000014
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype shadow-dcache (structure)
|
||||
((vtx-table uint32 :offset-assert 0)
|
||||
(single-edge-table uint32 :offset-assert 4)
|
||||
@@ -24625,40 +24624,38 @@
|
||||
:size-assert #xb0
|
||||
:flag-assert #x9000000b0
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern *shadow-data* object) ;; shadow-data
|
||||
;; (define-extern shadow-invert-z-buf function)
|
||||
;; (define-extern shadow-make-invert-buf function)
|
||||
;; (define-extern *shadow-dma-invert-call* object)
|
||||
;; (define-extern shadow-dma-init function) ;; (function dma-buffer none)
|
||||
;; (define-extern shadow-dma-end function) ;; (function dma-buffer none)
|
||||
;; (define-extern shadow-vu0-block object) ;; vu-function
|
||||
;; (define-extern shadow-xform-verts function) ;; function
|
||||
;; (define-extern shadow-calc-dual-verts function) ;; function
|
||||
;; (define-extern shadow-scissor-edges function) ;; function
|
||||
;; (define-extern shadow-scissor-top function) ;; function
|
||||
;; (define-extern shadow-init-vars function) ;; function
|
||||
;; (define-extern shadow-find-facing-single-tris function) ;; function
|
||||
;; (define-extern shadow-find-single-edges function) ;; function
|
||||
;; (define-extern shadow-find-facing-double-tris function) ;; function
|
||||
;; (define-extern shadow-find-double-edges function) ;; function
|
||||
;; (define-extern shadow-add-verts function) ;; function
|
||||
;; (define-extern shadow-add-facing-single-tris function) ;; function
|
||||
;; (define-extern shadow-add-single-edges function) ;; function
|
||||
;; (define-extern shadow-add-single-tris function)
|
||||
;; (define-extern shadow-add-double-tris function) ;; function
|
||||
;; (define-extern shadow-add-double-edges function) ;; function
|
||||
;; (define-extern debug-draw-settings function)
|
||||
;; (define-extern shadow-execute function) ;; (function shadow-dma-packet pointer pointer)
|
||||
;; (define-extern shadow-vu0-upload function) ;; (function none)
|
||||
(define-extern *shadow-data* shadow-data)
|
||||
(define-extern shadow-invert-z-buf (function dma-buffer none))
|
||||
(define-extern shadow-make-invert-buf (function none))
|
||||
(define-extern *shadow-dma-invert-call* pointer)
|
||||
(define-extern shadow-dma-init (function dma-buffer none))
|
||||
(define-extern shadow-dma-end (function dma-buffer gs-rgbaq symbol int none))
|
||||
(define-extern shadow-vu0-block vu-function)
|
||||
(define-extern shadow-xform-verts function)
|
||||
(define-extern shadow-calc-dual-verts function)
|
||||
(define-extern shadow-scissor-edges function)
|
||||
(define-extern shadow-scissor-top function)
|
||||
(define-extern shadow-init-vars function)
|
||||
(define-extern shadow-find-facing-single-tris function)
|
||||
(define-extern shadow-find-single-edges function)
|
||||
(define-extern shadow-find-facing-double-tris function)
|
||||
(define-extern shadow-find-double-edges function)
|
||||
(define-extern shadow-add-verts function)
|
||||
(define-extern shadow-add-facing-single-tris function)
|
||||
(define-extern shadow-add-single-edges function)
|
||||
(define-extern shadow-add-single-tris function)
|
||||
(define-extern shadow-add-double-tris function)
|
||||
(define-extern shadow-add-double-edges function)
|
||||
(define-extern debug-draw-settings (function matrix none))
|
||||
(define-extern shadow-execute (function shadow-dma-packet pointer pointer))
|
||||
(define-extern shadow-vu0-upload (function none))
|
||||
(define-extern shadow-execute-all (function dma-buffer none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; shadow-vu1 ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
#|
|
||||
(deftype shadow-vu1-constants (structure)
|
||||
((hmgescale vector :inline :offset-assert 0)
|
||||
(invhscale vector :inline :offset-assert 16)
|
||||
@@ -24666,7 +24663,7 @@
|
||||
(texscale vector :inline :offset-assert 48)
|
||||
(hvdfoff vector :inline :offset-assert 64)
|
||||
(fog vector :inline :offset-assert 80)
|
||||
(clrs vector 2 :offset-assert 96) ;; guessed by decompiler
|
||||
(clrs vector 2 :inline :offset-assert 96) ;; guessed by decompiler
|
||||
(adgif gs-gif-tag :inline :offset-assert 128)
|
||||
(texflush gs-adcmd :inline :offset-assert 144) ;; ad-cmd :inline
|
||||
(flush gs-adcmd :inline :offset-assert 160) ;; ad-cmd :inline
|
||||
@@ -24677,9 +24674,7 @@
|
||||
:size-assert #xd0
|
||||
:flag-assert #x9000000d0
|
||||
)
|
||||
|#
|
||||
|
||||
#|
|
||||
(deftype shadow-vu1-data (structure)
|
||||
((adgif gs-gif-tag :inline :offset-assert 0)
|
||||
(ad gs-adcmd :inline :offset-assert 16)
|
||||
@@ -24688,20 +24683,19 @@
|
||||
(quadgif gs-gif-tag :inline :offset-assert 64)
|
||||
(texoffset vector :inline :offset-assert 80)
|
||||
(texscale vector :inline :offset-assert 96)
|
||||
(clrs UNKNOWN 2 :offset-assert 112)
|
||||
(clrs qword 2 :inline :offset-assert 112)
|
||||
)
|
||||
:method-count-assert 9
|
||||
:size-assert #x90
|
||||
:flag-assert #x900000090
|
||||
)
|
||||
|#
|
||||
|
||||
;; (define-extern *shadow-vu1-data* object)
|
||||
;; (define-extern shadow-vu1-block object) ;; vu-function
|
||||
;; (define-extern shadow-vu1-add-constants function) ;; (function dma-buffer none)
|
||||
;; (define-extern shadow-vu1-patch-consts function)
|
||||
;; (define-extern shadow-vu1-add-matrix function) ;; (function dma-buffer math-camera none)
|
||||
;; (define-extern shadow-vu1-init-buffer function) ;; (function dma-buffer none)
|
||||
(define-extern *shadow-vu1-data* shadow-vu1-data)
|
||||
(define-extern shadow-vu1-block vu-function)
|
||||
(define-extern shadow-vu1-add-constants (function dma-buffer int none))
|
||||
(define-extern shadow-vu1-patch-consts (function symbol int none))
|
||||
(define-extern shadow-vu1-add-matrix (function dma-buffer math-camera none))
|
||||
(define-extern shadow-vu1-init-buffer (function dma-buffer int none))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; warp ;;
|
||||
|
||||
@@ -741,7 +741,24 @@
|
||||
"generic-warp-dest",
|
||||
"generic-warp-envmap-dest",
|
||||
"generic-no-light-proc",
|
||||
"foreground-draw-hud"
|
||||
"foreground-draw-hud",
|
||||
// shadow
|
||||
"shadow-execute",
|
||||
"shadow-add-double-edges",
|
||||
"shadow-add-double-tris",
|
||||
"shadow-add-single-tris",
|
||||
"shadow-add-single-edges",
|
||||
"shadow-add-facing-single-tris",
|
||||
"shadow-add-verts",
|
||||
"shadow-find-double-edges",
|
||||
"shadow-find-facing-double-tris",
|
||||
"shadow-find-single-edges",
|
||||
"shadow-find-facing-single-tris",
|
||||
"shadow-init-vars",
|
||||
"shadow-scissor-top",
|
||||
"shadow-scissor-edges",
|
||||
"shadow-calc-dual-verts",
|
||||
"shadow-xform-verts"
|
||||
],
|
||||
|
||||
"mips2c_jump_table_functions": {},
|
||||
|
||||
@@ -4560,7 +4560,15 @@
|
||||
"foreground-add-mtx-calc": [[1, "v1", "foreground-work"]],
|
||||
"foreground-shadow": [
|
||||
[2, "v1", "foreground-work"],
|
||||
[[13, 19], "t1", "vector"]
|
||||
[[13, 19], "t1", "vector"],
|
||||
[[44, 110], "a3", "shadow-dma-packet"],
|
||||
[54, "t3", "(pointer shadow-dma-packet)"],
|
||||
[[67, 72], "t5", "(inline-array vector)"],
|
||||
[[77, 83], "v1", "vector"],
|
||||
[[127, 193], "t2", "shadow-dma-packet"],
|
||||
[137, "t5", "(pointer shadow-dma-packet)"],
|
||||
[[150, 155], "t7", "(inline-array vector)"],
|
||||
[[160, 166], "t7", "vector"]
|
||||
],
|
||||
"dma-add-process-drawable": [
|
||||
[433, "a0", "foreground-work"],
|
||||
@@ -10237,5 +10245,131 @@
|
||||
[4, "v1", "generic-work"]
|
||||
],
|
||||
"generic-warp-source": [[2, "at", "generic-work"]],
|
||||
"birth-func-whack-score": [[[0, 29], "v1", "(array int32)"]]
|
||||
"birth-func-whack-score": [[[0, 29], "v1", "(array int32)"]],
|
||||
"shadow-vu1-init-buffer": [[[18, 27], "a0", "dma-packet"]],
|
||||
"shadow-vu1-add-constants": [
|
||||
[[7, 16], "a2", "dma-packet"],
|
||||
[[20, 66], "v1", "shadow-vu1-constants"],
|
||||
[[72, 77], "a1", "dma-packet"],
|
||||
[[82, 94], "a1", "shadow-vu1-data"]
|
||||
],
|
||||
"shadow-vu1-add-matrix": [
|
||||
[[11, 19], "a3", "dma-packet"],
|
||||
[[26, 30], "v1", "matrix"]
|
||||
],
|
||||
"shadow-vu0-upload": [[[16, 18], "a0", "dma-packet"]],
|
||||
"shadow-make-invert-buf": [[[13, 16], "v1", "dma-packet"]],
|
||||
"shadow-invert-z-buf": [
|
||||
[[4, 8], "a2", "dma-packet"],
|
||||
[[13, 16], "a2", "gs-gif-tag"],
|
||||
[27, "t1", "(pointer gs-reg)"],
|
||||
[28, "t1", "(pointer gs-reg64)"],
|
||||
[30, "t1", "(pointer gs-reg)"],
|
||||
[32, "t1", "(pointer gs-frame)"],
|
||||
[34, "t1", "(pointer gs-reg)"],
|
||||
[38, "t1", "(pointer gs-reg)"],
|
||||
[42, "t1", "(pointer gs-reg)"],
|
||||
[36, "t1", "(pointer gs-zbuf)"],
|
||||
[40, "t1", "(pointer gs-test)"],
|
||||
[44, "t1", "(pointer gs-alpha)"],
|
||||
[45, "t1", "(pointer gs-reg)"],
|
||||
[47, "t1", "(pointer gs-reg64)"],
|
||||
[49, "t1", "(pointer gs-reg)"],
|
||||
[51, "t1", "(pointer gs-rgbaq)"],
|
||||
[[61, 64], "t2", "gs-gif-tag"],
|
||||
[89, "t4", "(pointer gs-xyzf)"],
|
||||
[79, "t4", "(pointer gs-xyzf)"],
|
||||
[[106, 117], "v1", "(pointer uint64)"]
|
||||
],
|
||||
"shadow-dma-init": [
|
||||
[[18, 21], "t4", "dma-packet"],
|
||||
[[27, 31], "t6", "dma-packet"],
|
||||
[[36, 39], "t6", "gs-gif-tag"],
|
||||
[43, "t4", "(pointer gs-reg64)"],
|
||||
[47, "t4", "(pointer gs-test)"],
|
||||
[45, "t4", "(pointer gs-reg64)"],
|
||||
[49, "t4", "(pointer gs-reg64)"],
|
||||
[51, "t4", "(pointer gs-alpha)"],
|
||||
[53, "t4", "(pointer gs-reg64)"],
|
||||
[58, "t4", "(pointer gs-frame)"],
|
||||
[60, "t4", "(pointer gs-reg64)"],
|
||||
[64, "t4", "(pointer gs-reg64)"],
|
||||
[73, "t4", "(pointer gs-reg64)"],
|
||||
[81, "t4", "(pointer gs-reg)"],
|
||||
[84, "t4", "(pointer gs-reg)"],
|
||||
[62, "t4", "(pointer gs-zbuf)"],
|
||||
[71, "t4", "(pointer gs-xy-offset)"],
|
||||
[79, "t4", "(pointer gs-tex0)"],
|
||||
[82, "t4", "(pointer gs-tex1)"],
|
||||
[85, "t4", "(pointer gs-miptbp)"],
|
||||
[87, "t4", "(pointer gs-reg)"],
|
||||
[96, "t4", "(pointer gs-clamp)"],
|
||||
[[103, 106], "t3", "gs-gif-tag"],
|
||||
[[122, 125], "t3", "gs-gif-tag"],
|
||||
[111, "t3", "(pointer gs-prim)"],
|
||||
[113, "t3", "(pointer gs-rgbaq)"],
|
||||
[143, "t5", "(pointer gs-xyzf)"],
|
||||
[156, "t5", "(pointer gs-xyzf)"],
|
||||
[[167, 170], "a3", "gs-gif-tag"],
|
||||
[177, "a3", "(pointer gs-test)"],
|
||||
[179, "a3", "(pointer gs-reg64)"],
|
||||
[183, "a3", "(pointer gs-reg64)"],
|
||||
[193, "a3", "(pointer gs-reg64)"],
|
||||
[190, "a3", "(pointer gs-reg64)"],
|
||||
[202, "a3", "(pointer gs-reg64)"],
|
||||
[181, "a3", "(pointer gs-zbuf)"],
|
||||
[188, "a3", "(pointer gs-frame)"],
|
||||
[191, "a3", "(pointer uint64)"],
|
||||
[206, "a3", "(pointer gs-reg64)"],
|
||||
[213, "a3", "(pointer gs-reg64)"],
|
||||
[214, "a3", "(pointer uint64)"],
|
||||
[216, "a3", "(pointer gs-reg64)"],
|
||||
[211, "a3", "(pointer gs-frame)"],
|
||||
[204, "a3", "(pointer gs-zbuf)"],
|
||||
[200, "a3", "(pointer gs-test)"],
|
||||
[229, "v1", "(pointer uint64)"],
|
||||
[225, "v1", "(pointer uint64)"],
|
||||
[230, "v1", "(pointer uint64)"],
|
||||
[235, "v1", "(pointer uint64)"]
|
||||
],
|
||||
"shadow-dma-end": [
|
||||
[33, "a1", "dma-packet"],
|
||||
[32, "a1", "dma-packet"],
|
||||
[35, "a1", "dma-packet"],
|
||||
[24, "v1", "(pointer uint64)"],
|
||||
[40, "v1", "dma-packet"],
|
||||
[41, "v1", "(pointer uint64)"],
|
||||
[[62, 65], "a0", "gs-gif-tag"],
|
||||
[[51, 56], "a0", "dma-packet"],
|
||||
[69, "a0", "(pointer uint64)"],
|
||||
[71, "a0", "(pointer gs-reg64)"],
|
||||
[75, "a0", "(pointer gs-reg64)"],
|
||||
[82, "a0", "(pointer gs-reg64)"],
|
||||
[83, "a0", "(pointer uint64)"],
|
||||
[85, "a0", "(pointer gs-reg64)"],
|
||||
[86, "a0", "(pointer uint64)"],
|
||||
[88, "a0", "(pointer gs-reg64)"],
|
||||
[73, "a0", "(pointer gs-test)"],
|
||||
[80, "a0", "(pointer gs-frame)"],
|
||||
[[95, 100], "a1", "dma-packet"],
|
||||
[150, "t0", "(pointer uint64)"],
|
||||
[163, "t0", "(pointer uint64)"],
|
||||
[186, "t0", "(pointer uint64)"],
|
||||
[199, "t0", "(pointer uint64)"],
|
||||
[[105, 108], "a1", "gs-gif-tag"],
|
||||
[109, "a1", "(pointer gs-prim)"],
|
||||
[110, "a1", "(pointer gs-rgbaq)"],
|
||||
[[115, 118], "a1", "(inline-array gs-gif-tag)"],
|
||||
[217, "v1", "(pointer uint64)"],
|
||||
[213, "v1", "(pointer uint64)"],
|
||||
[218, "v1", "(pointer uint64)"],
|
||||
[223, "v1", "(pointer uint64)"]
|
||||
],
|
||||
"shadow-execute-all": [
|
||||
[[53, 60], "v1", "shadow-dcache"],
|
||||
[111, "v1", "shadow-dcache"],
|
||||
[116, "a0", "uint32"],
|
||||
[[188, 246], "gp", "shadow-dcache"],
|
||||
[93, "v1", "shadow-dcache"]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -4222,5 +4222,13 @@
|
||||
},
|
||||
"(method 55 nav-enemy)": {
|
||||
"args": ["self"]
|
||||
},
|
||||
"foreground-shadow": {
|
||||
"args": ["draw-ctrl", "arg1"],
|
||||
"vars": {
|
||||
"v1-3": "shadow-settings",
|
||||
"a3-0": "shadow-geo",
|
||||
"t0-0": "dist"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user