X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;ds=sidebyside;f=src%2Fdma.c;h=5de4faf79b0f9dfe8e3702cc6f58e2e70c5d4b94;hb=89d3ade57e85addac5eab0f3e8a795f23d518944;hp=9efade4292168e8fabe550557b4944f96085da15;hpb=4f58871ec2e25fb8cd7dfc19d1e4999453cf9555;p=gbajam21 diff --git a/src/dma.c b/src/dma.c index 9efade4..5de4faf 100644 --- a/src/dma.c +++ b/src/dma.c @@ -31,24 +31,28 @@ void AAS_DoDMA3(void*, void*, uint32_t); void dma_copy32(int channel, void *dst, void *src, int words, unsigned int flags) { +#ifndef NOSOUND if(channel == 3) { AAS_DoDMA3(src, dst, words | flags | DMA_32 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)src; - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = words | flags | DMA_32 | DMA_ENABLE; + return; } +#endif + reg_dma[channel][DMA_SRC] = (uint32_t)src; + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = words | flags | DMA_32 | DMA_ENABLE; } void dma_copy16(int channel, void *dst, void *src, int halfwords, unsigned int flags) { +#ifndef NOSOUND if(channel == 3) { AAS_DoDMA3(src, dst, halfwords | flags | DMA_16 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)src; - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = halfwords | flags | DMA_16 | DMA_ENABLE; + return; } +#endif + reg_dma[channel][DMA_SRC] = (uint32_t)src; + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = halfwords | flags | DMA_16 | DMA_ENABLE; } /* --- fill a buffer with an ammount of words and halfwords using DMA --- */ @@ -58,23 +62,27 @@ static uint32_t fill[4]; void dma_fill32(int channel, void *dst, uint32_t val, int words) { fill[channel] = val; +#ifndef NOSOUND if(channel == 3) { AAS_DoDMA3(fill + channel, dst, words | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_32 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = words | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_32 | DMA_ENABLE; + return; } +#endif + reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = words | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_32 | DMA_ENABLE; } void dma_fill16(int channel, void *dst, uint16_t val, int halfwords) { fill[channel] = val; +#ifndef NOSOUND if(channel == 3) { AAS_DoDMA3(fill + channel, dst, halfwords | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_16 | DMA_ENABLE); - } else { - reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); - reg_dma[channel][DMA_DST] = (uint32_t)dst; - reg_dma[channel][DMA_CTRL] = halfwords | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_16 | DMA_ENABLE; + return; } +#endif + reg_dma[channel][DMA_SRC] = (uint32_t)(fill + channel); + reg_dma[channel][DMA_DST] = (uint32_t)dst; + reg_dma[channel][DMA_CTRL] = halfwords | DMA_SRC_FIX | DMA_TIMING_IMMED | DMA_16 | DMA_ENABLE; }