summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/gba/defines.h4
-rw-r--r--include/memory.h56
2 files changed, 59 insertions, 1 deletions
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 7fd429d..5f0123a 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -8,6 +8,8 @@
#define IWRAM_DATA __attribute__((section("iwram_data")))
#define EWRAM_DATA __attribute__((section("ewram_data")))
+#define UNUSED __attribute__((unused))
+#define NAKED __attribute__((naked))
#define ALIGNED(n) __attribute__((aligned(n)))
@@ -59,4 +61,4 @@
#define WIN_RANGE(a, b) (((a) << 8) | (b))
-#endif // GUARD_GBA_DEFINES
+#endif // GUARD_GBA_DEFINES \ No newline at end of file
diff --git a/include/memory.h b/include/memory.h
new file mode 100644
index 0000000..99b03e0
--- /dev/null
+++ b/include/memory.h
@@ -0,0 +1,56 @@
+#ifndef GUARD_MEMORY_H
+#define GUARD_MEMORY_H
+
+#define HEAP_SIZE 0x24000
+
+struct HeapSettings
+{
+ u8 *start;
+ u32 size;
+};
+
+struct HeapMemoryBlock {
+ u8 *start;
+ s32 size;
+ s32 allocatedSize;
+};
+
+struct HeapFreeListElement
+{
+ u32 unk_atb;
+ u32 atb;
+ u32 grp;
+ struct HeapMemoryBlock block;
+};
+
+struct HeapDescriptor
+{
+ u32 unk0;
+ u32 unk4;
+ struct HeapFreeListElement *freeList;
+ s32 freeCount;
+ u32 freeListLength;
+ u8 *start;
+ u32 size;
+};
+
+void InitHeap(void);
+
+void MemoryClear8(u8 *dest, s32 size);
+void MemoryClear16(u16 *dest, s32 size);
+void MemoryClear32(u32 *dest, s32 size);
+void MemoryFill8(u8 *dest, u8 value, s32 size);
+void MemoryFill16(u16 *dest, u16 value, s32 size);
+void MemoryFill32(u32 *dest, u32 value, s32 size);
+void MemoryCopy8(u8 *dest, u8 *src, s32 size);
+void MemoryCopy16(u16 *dest, u16 *src, s32 size);
+void MemoryCopy32(u32 *dest, u32 *src, s32 size);
+void MemoryCopy8(u8 *dest, u8 *src, s32 size);
+void MemoryCopy16(u16 *dest, u16 *src, s32 size);
+void MemoryCopy32(u32 *dest, u32 *src, s32 size);
+
+void InitHeapInternal(void);
+void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32);
+void InitSubHeap(struct HeapDescriptor *, struct HeapFreeListElement *, u32);
+
+#endif // GUARD_MEMORY_H \ No newline at end of file