summaryrefslogtreecommitdiff
path: root/include/gba/macro.h
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-01-31 04:29:44 -0800
committerYamaArashi <shadow962@live.com>2016-01-31 04:29:44 -0800
commit6f1c90830216227a428e60c12da7c8b7a8f01b46 (patch)
tree1200c7e03ccb10df9ea7a82938781813da4d30a2 /include/gba/macro.h
parent179ebd2dbc75c65b41c9ccd634f356266649d13a (diff)
string_util.c
Diffstat (limited to 'include/gba/macro.h')
-rw-r--r--include/gba/macro.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/include/gba/macro.h b/include/gba/macro.h
new file mode 100644
index 000000000..42830d47c
--- /dev/null
+++ b/include/gba/macro.h
@@ -0,0 +1,52 @@
+#ifndef GUARD_GBA_MACRO_H
+#define GUARD_GBA_MACRO_H
+
+#define CPU_FILL(dest, value, size, bit) \
+do { \
+ vu##bit tmp = (vu##bit)(value); \
+ CpuSet((void *)&tmp, \
+ dest, \
+ CPU_SET_##bit##BIT | CPU_SET_SRC_FIXED | ((size)/(bit/8) & 0x1FFFFF)); \
+} while (0)
+
+#define CpuFill16(dest, value, size) CPU_FILL(dest, value, size, 16)
+#define CpuFill32(dest, value, size) CPU_FILL(dest, value, size, 32)
+
+#define CPU_COPY(src, dest, size, bit) CpuSet(src, dest, CPU_SET_##bit##BIT | ((size)/(bit/8) & 0x1FFFFF))
+
+#define CpuCopy16(src, dest, size) CPU_COPY(src, dest, size, 16)
+#define CpuCopy32(src, dest, size) CPU_COPY(src, dest, size, 32)
+
+#define DmaSet(dmaNum, src, dest, controlData) \
+do { \
+ vu32 *dmaRegs = (vu32 *)REG_ADDR_DMA##dmaNum; \
+ dmaRegs[0] = (vu32)(src); \
+ dmaRegs[1] = (vu32)(dest); \
+ dmaRegs[2] = (vu32)(controlData); \
+ dmaRegs[2]; \
+} while (0)
+
+#define DMA_FILL(dmaNum, dest, value, size, bit) \
+do { \
+ vu##bit tmp = (vu##bit)(value); \
+ DmaSet(dmaNum, \
+ &tmp, \
+ dest, \
+ (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_FIXED | DMA_DEST_INC) << 16 \
+ | ((size)/(bit/8))); \
+} while (0)
+
+#define DmaFill16(dmaNum, dest, value, size) DMA_FILL(dmaNum, dest, value, size, 16)
+#define DmaFill32(dmaNum, dest, value, size) DMA_FILL(dmaNum, dest, value, size, 32)
+
+#define DMA_COPY(dmaNum, src, dest, size, bit) \
+ DmaSet(dmaNum, \
+ src, \
+ dest, \
+ (DMA_ENABLE | DMA_START_NOW | DMA_##bit##BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 \
+ | ((size)/(bit/8)))
+
+#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16)
+#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32)
+
+#endif // GUARD_GBA_MACRO_H