From 85cf49ed0d9d8837e6e5dc9537b0c77a2f966f13 Mon Sep 17 00:00:00 2001 From: red031000 Date: Wed, 9 Sep 2020 18:13:46 +0100 Subject: arm9 MI_dma_hblank --- arm9/lib/src/MI_dma.c | 4 ++-- arm9/lib/src/MI_dma_hblank.c | 31 +++++++++++++++++++++++++++++++ arm9/lib/src/MI_init.c | 1 + 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 arm9/lib/src/MI_dma_hblank.c (limited to 'arm9/lib/src') diff --git a/arm9/lib/src/MI_dma.c b/arm9/lib/src/MI_dma.c index 565b1ef6..f322f87f 100644 --- a/arm9/lib/src/MI_dma.c +++ b/arm9/lib/src/MI_dma.c @@ -258,8 +258,8 @@ ARM_FUNC void MIi_CheckAnotherAutoDMA(u32 dmaNo, u32 dmaType) timing = dmaCnt & 0x38000000; if (timing == dmaType - || (timing == 0x8000000 && dmaType == 0x10000000) - || (timing == 0x10000000 && dmaType == 0x8000000)) + || (timing == 0x8000000 && dmaType == MI_DMA_TIMING_H_BLANK) + || (timing == MI_DMA_TIMING_H_BLANK && dmaType == 0x8000000)) { continue; } diff --git a/arm9/lib/src/MI_dma_hblank.c b/arm9/lib/src/MI_dma_hblank.c new file mode 100644 index 00000000..67e579fe --- /dev/null +++ b/arm9/lib/src/MI_dma_hblank.c @@ -0,0 +1,31 @@ +#include "MI_dma_hblank.h" +#include "MI_dma.h" +#include "function_target.h" + +ARM_FUNC void MI_HBlankDmaCopy32(u32 dmaNo, const void *src, void *dest, u32 size) +{ + MIi_CheckAnotherAutoDMA(dmaNo, MI_DMA_TIMING_H_BLANK); + MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); + + if (size == 0) + { + return; + } + + MI_WaitDma(dmaNo); + MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, (u32)(0x96600000 | (size / 4))); +} + +ARM_FUNC void MI_HBlankDmaCopy16(u32 dmaNo, const void *src, void *dest, u32 size) +{ + MIi_CheckAnotherAutoDMA(dmaNo, MI_DMA_TIMING_H_BLANK); + MIi_CheckDma0SourceAddress(dmaNo, (u32)src, size, MI_DMA_SRC_INC); + + if (size == 0) + { + return; + } + + MI_WaitDma(dmaNo); + MIi_DmaSetParams(dmaNo, (u32)src, (u32)dest, (u32)(0x92600000 | (size / 2))); +} diff --git a/arm9/lib/src/MI_init.c b/arm9/lib/src/MI_init.c index 4556e95a..4c861286 100644 --- a/arm9/lib/src/MI_init.c +++ b/arm9/lib/src/MI_init.c @@ -1,3 +1,4 @@ +#include "MI_init.h" #include "nitro/types.h" #include "function_target.h" #include "MI_dma.h" -- cgit v1.2.3