Groundwork for IOP DMA implementation
* The DMA routine on the IOP works similarly to the PSX version with a few additions. There are 7 channels from the PSX and an additional 6 new PS2 exclusive ones. One the PSX, each channel has 3 registers used to configure and use it and 3 global registers. * The PS2 contains all the older DMA registers, but it add 6 more channels and duplicates the global registers (DPCR now has a counterpart called DPCR2) This is done because each global register can control up to 7 channels. An additional register on each channel (tadr) and 2 additional global registers have been added as well. For now we don't really care to implement them, only read/write to them. * For reading and writing to the registers structs are used to prevent the usage of switch and if statements.
Showing
- CMakeLists.txt 2 additions, 1 deletionCMakeLists.txt
- src/common/manager.cc 2 additions, 1 deletionsrc/common/manager.cc
- src/common/manager.h 12 additions, 0 deletionssrc/common/manager.h
- src/common/memory.h 2 additions, 1 deletionsrc/common/memory.h
- src/cpu/iop/dma.cc 40 additions, 104 deletionssrc/cpu/iop/dma.cc
- src/cpu/iop/dma.h 51 additions, 27 deletionssrc/cpu/iop/dma.h
- src/cpu/iop/iop.cc 1 addition, 1 deletionsrc/cpu/iop/iop.cc
Please register or sign in to comment