summaryrefslogtreecommitdiff
path: root/arm9/lib/src
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/src')
-rw-r--r--arm9/lib/src/MI_dma.c4
-rw-r--r--arm9/lib/src/MI_dma_hblank.c31
-rw-r--r--arm9/lib/src/MI_init.c1
3 files changed, 34 insertions, 2 deletions
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"