NV3 DMA Engine
(DirectDraw Driver) 

Initially set CACHES, CACHE1_PULL0, CACHE1_PULL1, CACHE1_DMA0 to 1

Same for other areas

CACHE1_PUSH1 contains CHID

If it's different:

If RmFifoFlushContext failed: Do nothing

Set PULL0, PUSH0, Caches to 1, return false


If it's not:
DMA TLB PTE seems to be 1 for direct programming, maybe RM does it differently
Tag=FFFFFFFF
CACHE1_DMA1 - Number of bytes to send
CACHE1_DMA2 - Get offset 
CACHE1_DMA3 - Bus address space (Area BAR0 mapped to? Or bar1?)

TO START:
To set up DMA for for Cache1 Puller: CACHE1_PULL0 -> 1, changes to 0 when done
To set up DMA Cache1 Push: CACHE1_PUsh0 -> 1, changes to 0 when done
Set CACHES to 1

GO: Set DMA0 to 1

***** Implementation in Driver ******

You can dma to "localvidmem:", "sysvidmem:" or "sysmem:", this is represented by a driver

CAUSE OF FAILURE: 
the pfifo is never free because it never processes the submitted objects
which means that the FIFO is never free
which means that the drivers spin forever waiting for the fifo to be free

DMA_OBJECT STRUCTURE IN RESOURCE MANAGER:
0x328: Valid
0x34c: base address?
0x374: actually do the transfer

some objects don't actually need to do dma, for example, video patchcord, it just creates a structure in the driver, and rop just allocate ssome memory to put the data for the patchcord/rop thing

dma start=nv3_mini dc67
call of mthdCreate for ***DRIVER*** CLASS ID: a7b44, check ptr






