jak-project/goal_src/jak2/engine/ps2/vif-h.gc

91 lines
2.7 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: vif-h.gc
;; name in dgo: vif-h
;; dgos: ENGINE, GAME
#|@file
Types related to VIF: the PS2's Vector Interface.
Each of VU0 and VU1 has a VIF which is used to sent/receive data.
The VIFs are controller by registers and fed data using DMA
the vif registers defined here are used extremely rarely, usually they are sent DMA
(during gameplay, everything is synchronized by DMA, so code generally does not know when
it is safe to mess with VIF registers.)
|#
;; DECOMP BEGINS
;;VIF0_STAT or VIF1_STAT bitfields
(deftype vif-stat (uint32)
((vps uint8 :offset 0 :size 2)
(vew uint8 :offset 2 :size 1)
(mrk uint8 :offset 6 :size 1)
(vss uint8 :offset 8 :size 1)
(vfs uint8 :offset 9 :size 1)
(vis uint8 :offset 10 :size 1)
(int uint8 :offset 11 :size 1)
(er0 uint8 :offset 12 :size 1)
(er1 uint8 :offset 13 :size 1)
(fqc uint8 :offset 24 :size 4)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
(deftype vif-fbrst (uint32)
((rst uint8 :offset 0 :size 1)
(fbk uint8 :offset 1 :size 1)
(stp uint8 :offset 2 :size 1)
(stc uint8 :offset 3 :size 1)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
(deftype vif-err (uint32)
((mii uint8 :offset 0 :size 1)
(me0 uint8 :offset 1 :size 1) ;; PS2 hardware bug, must set this to 1 for correct operation.
(me1 uint8 :offset 2 :size 1)
)
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
(deftype vif-bank (structure)
((stat uint32 :offset-assert 0)
(fbrst uint32 :offset 16)
(err vif-err :offset 32)
(mark uint32 :offset 48)
(cycle uint32 :offset 64)
(mode uint32 :offset 80)
(num uint32 :offset 96)
(mask uint32 :offset 112)
(code uint32 :offset 128)
(itops uint32 :offset 144)
(base uint32 :offset 160)
(offset uint32 :offset 176)
(tops uint32 :offset 192)
(itop uint32 :offset 208)
(top uint32 :offset 224)
(r0 uint32 :offset 256)
(r1 uint32 :offset 272)
(r2 uint32 :offset 288)
(r3 uint32 :offset 304)
(c0 uint32 :offset 320)
(c1 uint32 :offset 336)
(c2 uint32 :offset 352)
(c3 uint32 :offset 368)
)
:method-count-assert 9
:size-assert #x174
:flag-assert #x900000174
)
;; PS2 VIF map. There are no VIFs in OpenGOAL.
(defconstant VIF0_BANK (the vif-bank #x10003800))
(defconstant VIF1_BANK (the vif-bank #x10003c00))