mirror of
https://github.com/open-goal/jak-project
synced 2026-06-25 10:12:14 -04:00
253 lines
9.2 KiB
Common Lisp
253 lines
9.2 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: generic-effect.gc
|
|
;; name in dgo: generic-effect
|
|
;; dgos: ENGINE, GAME
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
;; definition for symbol *target-lock*, type object
|
|
(define *target-lock* (the-as object 0))
|
|
|
|
;; definition for symbol *generic-consts*, type generic-consts
|
|
(define *generic-consts*
|
|
(new 'static 'generic-consts
|
|
:dma-header (new 'static 'dma-packet
|
|
:dma (new 'static 'dma-tag :id (dma-tag-id cnt))
|
|
:vif0 (new 'static 'vif-tag :imm #x404 :cmd (vif-cmd stcycl))
|
|
:vif1 (new 'static 'vif-tag :cmd (vif-cmd unpack-v4-32))
|
|
)
|
|
:vif-header (new 'static 'array uint32 4 #x1000404 #x1000404 #x1000404 #x6c000000)
|
|
:dma-ref-vtxs (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id ref)))
|
|
:dma-cnt-call (new 'static 'dma-packet :dma (new 'static 'dma-tag :id (dma-tag-id cnt)))
|
|
:matrix (new 'static 'matrix :vector (new 'static 'inline-array vector 4
|
|
(new 'static 'vector :x 1.0)
|
|
(new 'static 'vector :y 1.0)
|
|
(new 'static 'vector :z 1.0)
|
|
(new 'static 'vector :w 1.0)
|
|
)
|
|
)
|
|
:base-strgif (new 'static 'generic-gif-tag
|
|
:fan-prim (new 'static 'gif-tag-prim
|
|
:pre #x1
|
|
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :fge #x1 :abe #x1)
|
|
:nreg #x3
|
|
)
|
|
:str-prim (new 'static 'gif-tag-prim
|
|
:pre #x1
|
|
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :fge #x1 :abe #x1)
|
|
:nreg #x3
|
|
)
|
|
:regs (new 'static 'gif-tag-regs-32 :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
|
|
)
|
|
:alpha-opaque (new 'static 'gs-adcmd :cmds (gs-reg64 alpha-1))
|
|
:alpha-translucent (new 'static 'gs-adcmd :cmds (gs-reg64 alpha-1) :x #x44)
|
|
:ztest-normal (new 'static 'gs-adcmd :cmds (gs-reg64 test-1) :x #x5026b)
|
|
:ztest-opaque (new 'static 'gs-adcmd :cmds (gs-reg64 test-1) :x #x5000a)
|
|
:adcmd-offsets (new 'static 'array uint8 16 #x0 #x20 #x20 #x20 #x0 #x30 #x30 #x30 #x0 #x30 #x30 #x30 #x0 #x30 #x30 #x30)
|
|
:stcycle-tag #x1000103
|
|
:unpack-vtx-tag #x68000000
|
|
:unpack-clr-tag #x6e004000
|
|
:unpack-tex-tag #x65000000
|
|
:mscal-tag #x14000006
|
|
:reset-cycle-tag #x1000404
|
|
:dma-tag-cnt #x10000000
|
|
:envmap (new 'static 'generic-envmap-consts
|
|
:consts (new 'static 'vector :x 1.0 :z 0.5 :w 0.5)
|
|
:strgif (new 'static 'generic-gif-tag
|
|
:fan-prim (new 'static 'gif-tag-prim
|
|
:pre #x1
|
|
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-fan) :iip #x1 :tme #x1 :abe #x1)
|
|
:nreg #x3
|
|
)
|
|
:str-prim (new 'static 'gif-tag-prim
|
|
:pre #x1
|
|
:prim (new 'static 'gs-prim :prim (gs-prim-type tri-strip) :iip #x1 :tme #x1 :abe #x1)
|
|
:nreg #x3
|
|
)
|
|
:regs (new 'static 'gif-tag-regs-32 :regs0 (gif-reg-id st) :regs1 (gif-reg-id rgbaq) :regs2 (gif-reg-id xyzf2))
|
|
)
|
|
:colors (new 'static 'vector4w :x -2139062144 :y -2139062144 :z -2139062144 :w -2139062144)
|
|
)
|
|
:light-consts (new 'static 'vector :x 255.0 :y 8388608.0)
|
|
)
|
|
)
|
|
|
|
(define-extern *default-envmap-shader* adgif-shader)
|
|
|
|
|
|
(defun generic-work-init ((arg0 generic-bucket-state))
|
|
(quad-copy!
|
|
(the-as pointer (-> (scratchpad-object generic-work) fx-buf work))
|
|
(the-as pointer *generic-consts*)
|
|
27
|
|
)
|
|
(set! (-> (scratchpad-object generic-work) saves gifbuf-adr) (-> arg0 gifbuf-adr))
|
|
(set! (-> (scratchpad-object generic-work) saves inbuf-adr) (-> arg0 inbuf-adr))
|
|
(set! (-> (scratchpad-object generic-work) saves cur-outbuf)
|
|
(the-as uint (-> (scratchpad-object generic-work) fx-buf))
|
|
)
|
|
(let* ((v1-6 *default-envmap-shader*)
|
|
(a0-9 (-> (scratchpad-object generic-work) fx-buf work consts envmap shader))
|
|
(a1-2 (-> v1-6 quad 0 quad))
|
|
(a2-1 (-> v1-6 quad 1 quad))
|
|
(a3-0 (-> v1-6 quad 2 quad))
|
|
(t0-0 (-> v1-6 quad 3 quad))
|
|
(v0-1 (-> v1-6 quad 4 quad))
|
|
)
|
|
(set! (-> a0-9 quad 0 quad) a1-2)
|
|
(set! (-> a0-9 quad 1 quad) a2-1)
|
|
(set! (-> a0-9 quad 2 quad) a3-0)
|
|
(set! (-> a0-9 quad 3 quad) t0-0)
|
|
(set! (-> a0-9 quad 4 quad) v0-1)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
(defun generic-upload-vu0 ()
|
|
(none)
|
|
)
|
|
|
|
(defun generic-initialize-without-sync ((arg0 matrix) (arg1 vu-lights))
|
|
;(upload-vu0-program generic-vu0-block (the-as pointer #x70000054))
|
|
(let ((a2-0 (-> (scratchpad-object generic-work) fx-buf work consts matrix))
|
|
(v1-1 (-> arg0 quad 0))
|
|
(a0-3 (-> arg0 quad 1))
|
|
(a1-2 (-> arg0 quad 2))
|
|
(a3-0 (-> arg0 trans quad))
|
|
)
|
|
(set! (-> a2-0 quad 0) v1-1)
|
|
(set! (-> a2-0 quad 1) a0-3)
|
|
(set! (-> a2-0 quad 2) a1-2)
|
|
(set! (-> a2-0 trans quad) a3-0)
|
|
)
|
|
(if arg1
|
|
(quad-copy! (the-as pointer (-> (scratchpad-object generic-work) fx-buf work lights)) (the-as pointer arg1) 7)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defun generic-initialize ((arg0 generic-bucket-state) (arg1 matrix) (arg2 vu-lights))
|
|
(generic-work-init arg0)
|
|
(generic-upload-vu0)
|
|
(let ((a2-1 (-> (scratchpad-object generic-work) fx-buf work consts matrix))
|
|
(v1-1 (-> arg1 quad 0))
|
|
(a0-2 (-> arg1 quad 1))
|
|
(a1-1 (-> arg1 quad 2))
|
|
(a3-0 (-> arg1 trans quad))
|
|
)
|
|
(set! (-> a2-1 quad 0) v1-1)
|
|
(set! (-> a2-1 quad 1) a0-2)
|
|
(set! (-> a2-1 quad 2) a1-1)
|
|
(set! (-> a2-1 trans quad) a3-0)
|
|
)
|
|
(if arg2
|
|
(quad-copy! (the-as pointer (-> (scratchpad-object generic-work) fx-buf work lights)) (the-as pointer arg2) 7)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defun generic-wrapup ((arg0 generic-bucket-state))
|
|
(set! (-> arg0 gifbuf-adr) (-> (scratchpad-object generic-work) saves gifbuf-adr))
|
|
(set! (-> arg0 inbuf-adr) (-> (scratchpad-object generic-work) saves inbuf-adr))
|
|
(none)
|
|
)
|
|
|
|
(defun upload-vu0-program ((func vu-function) (wait-ptr pointer))
|
|
"Upload and block until done.
|
|
Generating the DMA is highly optimized."
|
|
(none)
|
|
)
|
|
|
|
|
|
;; definition for function generic-dma-from-spr
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for function generic-light-proc
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-light-proc function)
|
|
|
|
;; definition for function generic-envmap-proc
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-envmap-proc function)
|
|
|
|
;; definition for function generic-prepare-dma-double
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-prepare-dma-double function)
|
|
|
|
;; definition for function generic-prepare-dma-single
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-prepare-dma-single function)
|
|
|
|
;; definition for function generic-envmap-dproc
|
|
;; ERROR: function has no type analysis. Cannot decompile.
|
|
|
|
;; definition for function generic-interp-dproc
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for function generic-no-light-proc
|
|
;; ERROR: function has no type analysis. Cannot decompile.
|
|
|
|
;; definition for function generic-no-light-dproc-only
|
|
;; ERROR: function has no type analysis. Cannot decompile.
|
|
|
|
;; definition for function generic-no-light-dproc
|
|
;; ERROR: function has no type analysis. Cannot decompile.
|
|
|
|
;; definition for function generic-no-light+envmap
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for function generic-no-light
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for function generic-envmap-only-proc
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for function generic-light
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for function generic-copy-vtx-dclr-dtex
|
|
;; ERROR: function has no type analysis. Cannot decompile.
|
|
|
|
;; definition for function generic-none
|
|
;; ERROR: function has no type analysis. Cannot decompile.
|
|
|
|
;; definition for function generic-none-dma-wait
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition for symbol *warp-data*, type object
|
|
(define *warp-data* (the-as object (malloc 'global 1024)))
|
|
|
|
;; definition for function generic-warp-source-proc
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-warp-source-proc (function none))
|
|
|
|
;; definition for function generic-warp-source
|
|
;; ERROR: Unsupported inline assembly instruction kind - [lui at, 28672]
|
|
(defun generic-warp-source ((arg0 gsf-buffer))
|
|
(set! (-> (scratchpad-object generic-work) saves gsf-buf) arg0)
|
|
(generic-warp-source-proc)
|
|
(none)
|
|
)
|
|
|
|
;; definition for function generic-warp-dest-proc
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-warp-dest-proc function)
|
|
|
|
;; definition for function generic-warp-dest
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-warp-dest function)
|
|
|
|
;; definition for function generic-warp-envmap-dest
|
|
;; INFO: function output is handled by mips2c
|
|
(def-mips2c generic-warp-envmap-dest function)
|
|
|
|
;; definition for function generic-debug-light-proc
|
|
;; ERROR: function was not converted to expressions. Cannot decompile.
|
|
|
|
;; definition (debug) for function generic-post-debug
|
|
;; ERROR: function has no type analysis. Cannot decompile.
|